summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-09-03 02:40:06 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-09-03 02:40:06 +0000
commitb35cd0e8350babc091667a5070f8ff6e359e5750 (patch)
treeabc1612f77c9d692fb0d810c42bae10e28b9121c
parent4da59365263742bd16027434e2aa7d11e17d7909 (diff)
downloadtdepim-b35cd0e8350babc091667a5070f8ff6e359e5750.tar.gz
tdepim-b35cd0e8350babc091667a5070f8ff6e359e5750.zip
Hacked in a temporary fix for three GroupWare popups showing up when a single instance of a recurring meeting is resized in the agenda view
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1171222 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--korganizer/incidencechanger.cpp19
-rw-r--r--korganizer/incidencechanger.h5
-rw-r--r--korganizer/interfaces/korganizer/incidencechangerbase.h6
-rw-r--r--korganizer/koagenda.cpp9
-rw-r--r--korganizer/kogroupware.cpp197
-rw-r--r--korganizer/kogroupware.h3
6 files changed, 140 insertions, 99 deletions
diff --git a/korganizer/incidencechanger.cpp b/korganizer/incidencechanger.cpp
index 1c41c5cd9..f0dcb7b12 100644
--- a/korganizer/incidencechanger.cpp
+++ b/korganizer/incidencechanger.cpp
@@ -329,6 +329,14 @@ bool IncidenceChanger::changeIncidence( Incidence *oldinc, Incidence *newinc,
KOGlobals::WhatChanged action,
TQWidget *parent )
{
+ return changeIncidence( oldinc, newinc, action, parent, 0 );
+}
+
+bool IncidenceChanger::changeIncidence( Incidence *oldinc, Incidence *newinc,
+ KOGlobals::WhatChanged action,
+ TQWidget *parent,
+ int dontAskForGroupware )
+{
kdDebug(5850)<<"IncidenceChanger::changeIncidence for incidence \""<<newinc->summary()<<"\" ( old one was \""<<oldinc->summary()<<"\")"<<endl;
if ( incidencesEqual( newinc, oldinc ) ) {
// Don't do anything
@@ -347,7 +355,7 @@ kdDebug(5850)<<"IncidenceChanger::changeIncidence for incidence \""<<newinc->sum
success = KOGroupware::instance()->sendICalMessage(
parent,
KCal::Scheduler::Request,
- newinc, KOGlobals::INCIDENCEEDITED, attendeeStatusChanged );
+ newinc, KOGlobals::INCIDENCEEDITED, attendeeStatusChanged, dontAskForGroupware );
}
if ( success ) {
@@ -366,6 +374,13 @@ bool IncidenceChanger::addIncidence( Incidence *incidence,
ResourceCalendar *res, const TQString &subRes,
TQWidget *parent )
{
+ return addIncidence( incidence, res, subRes, parent, 0 );
+}
+
+bool IncidenceChanger::addIncidence( Incidence *incidence,
+ ResourceCalendar *res, const TQString &subRes,
+ TQWidget *parent, int dontAskForGroupware )
+{
CalendarResources *stdcal = dynamic_cast<CalendarResources *>( mCalendar );
if( stdcal && !stdcal->hasCalendarResources() ) {
KMessageBox::sorry(
@@ -440,7 +455,7 @@ bool IncidenceChanger::addIncidence( Incidence *incidence,
if ( !KOGroupware::instance()->sendICalMessage(
parent,
KCal::Scheduler::Request,
- incidence, KOGlobals::INCIDENCEADDED, false ) ) {
+ incidence, KOGlobals::INCIDENCEADDED, false, dontAskForGroupware ) ) {
KMessageBox::sorry(
parent,
i18n( "Attempt to send the scheduling message failed. "
diff --git a/korganizer/incidencechanger.h b/korganizer/incidencechanger.h
index afa550646..5e5595099 100644
--- a/korganizer/incidencechanger.h
+++ b/korganizer/incidencechanger.h
@@ -52,9 +52,14 @@ class IncidenceChanger : public KOrg::IncidenceChangerBase
bool addIncidence( Incidence *incidence,
ResourceCalendar *res, const TQString &subRes,
TQWidget *parent );
+ bool addIncidence( Incidence *incidence,
+ ResourceCalendar *res, const TQString &subRes,
+ TQWidget *parent, int dontAskForGroupware );
bool changeIncidence( Incidence *oldinc, Incidence *newinc,
KOGlobals::WhatChanged, TQWidget *parent );
+ bool changeIncidence( Incidence *oldinc, Incidence *newinc,
+ KOGlobals::WhatChanged, TQWidget *parent, int dontAskForGroupware );
bool deleteIncidence( Incidence *incidence, TQWidget *parent );
diff --git a/korganizer/interfaces/korganizer/incidencechangerbase.h b/korganizer/interfaces/korganizer/incidencechangerbase.h
index e7c133056..ec0288aac 100644
--- a/korganizer/interfaces/korganizer/incidencechangerbase.h
+++ b/korganizer/interfaces/korganizer/incidencechangerbase.h
@@ -57,9 +57,15 @@ public:
virtual bool addIncidence( Incidence *incidence,
ResourceCalendar *res, const TQString &subRes,
TQWidget *parent ) = 0;
+ virtual bool addIncidence( Incidence *incidence,
+ ResourceCalendar *res, const TQString &subRes,
+ TQWidget *parent, int dontAskForGroupware) = 0;
virtual bool changeIncidence( Incidence *oldinc, Incidence *newinc,
KOGlobals::WhatChanged, TQWidget *parent ) = 0;
+ virtual bool changeIncidence( Incidence *oldinc, Incidence *newinc,
+ KOGlobals::WhatChanged, TQWidget *parent, int dontAskForGroupware ) = 0;
+
virtual bool deleteIncidence( Incidence *incidence, TQWidget *parent ) = 0;
virtual bool cutIncidences( const Incidence::List &incidences, TQWidget *parent ) = 0;
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 8329d161c..bc456a786 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -1109,6 +1109,10 @@ void KOAgenda::endItemAction()
if ( chosenOption == KOGlobals::ONLY_THIS_ONE ||
chosenOption == KOGlobals::ONLY_FUTURE ) {
+ // FIXME Prompt for this...it is quite possible that the user does not want to broadcast the change
+ // That prompting dialog will require the ability to suppress/override the mChanger->endChange GroupWare communication though.
+ int autoAnswerGroupWare = 1; // Send all possible GroupWare messages without prompting
+
// Store modification information in case it is needed to recreate the changes with a new actionitem...
int mai_xl = mActionItem->cellXLeft();
int mai_xr = mActionItem->cellXRight();
@@ -1116,15 +1120,16 @@ void KOAgenda::endItemAction()
int mai_yb = mActionItem->cellYBottom();
multiModify = true;
+ emit startMultiModify( i18n("Dissociate event from recurrence") );
enableAgendaUpdate( false );
- mChanger->addIncidence( incToChange, mResPair.first, mResPair.second, this );
+ mChanger->addIncidence( incToChange, mResPair.first, mResPair.second, this, autoAnswerGroupWare );
enableAgendaUpdate( true );
KOGlobals::WhatChanged wc = chosenOption == KOGlobals::ONLY_THIS_ONE ?
KOGlobals::RECURRENCE_MODIFIED_ONE_ONLY :
KOGlobals::RECURRENCE_MODIFIED_ALL_FUTURE;
- mChanger->changeIncidence( oldIncSaved, inc, wc, this );
+ mChanger->changeIncidence( oldIncSaved, inc, wc, this, autoAnswerGroupWare );
// mActionItem does not exist any more, seeing as we just got done deleting it
// (by deleting/replacing the original incidence it was created from through
diff --git a/korganizer/kogroupware.cpp b/korganizer/kogroupware.cpp
index 0edcdc9c7..7b799eeda 100644
--- a/korganizer/kogroupware.cpp
+++ b/korganizer/kogroupware.cpp
@@ -242,7 +242,8 @@ bool KOGroupware::sendICalMessage( TQWidget* parent,
KCal::Scheduler::Method method,
Incidence* incidence,
KOGlobals::HowChanged action,
- bool attendeeStatusChanged )
+ bool attendeeStatusChanged,
+ int dontAskForGroupware )
{
// If there are no attendees, don't bother
if( incidence->attendees().isEmpty() )
@@ -264,108 +265,116 @@ bool KOGroupware::sendICalMessage( TQWidget* parent,
* insists on applying them.
*/
- if ( isOrganizer ) {
- /* We are the organizer. If there is more than one attendee, or if there is
- * only one, and it's not the same as the organizer, ask the user to send
- * mail. */
- if ( incidence->attendees().count() > 1
- || incidence->attendees().first()->email() != incidence->organizer().email() ) {
-
- TQString txt;
- switch( action ) {
- case KOGlobals::INCIDENCEEDITED:
- txt = i18n( "You changed the invitation \"%1\".\n"
- "Do you want to email the attendees an update message?" ).
- arg( incidence->summary() );
- break;
- case KOGlobals::INCIDENCEDELETED:
- Q_ASSERT( incidence->type() == "Event" || incidence->type() == "Todo" );
- if ( incidence->type() == "Event" ) {
- txt = i18n( "You removed the invitation \"%1\".\n"
- "Do you want to email the attendees that the event is canceled?" ).
- arg( incidence->summary() );
- } else if ( incidence->type() == "Todo" ) {
- txt = i18n( "You removed the invitation \"%1\".\n"
- "Do you want to email the attendees that the todo is canceled?" ).
- arg( incidence->summary() );
- }
- break;
- case KOGlobals::INCIDENCEADDED:
- if ( incidence->type() == "Event" ) {
- txt = i18n( "The event \"%1\" includes other people.\n"
- "Do you want to email the invitation to the attendees?" ).
- arg( incidence->summary() );
- } else if ( incidence->type() == "Todo" ) {
- txt = i18n( "The todo \"%1\" includes other people.\n"
- "Do you want to email the invitation to the attendees?" ).
+ if ( dontAskForGroupware == 1 ) {
+ rc = KMessageBox::Yes;
+ }
+ else if ( dontAskForGroupware == 2 ) {
+ rc = KMessageBox::No;
+ }
+ else {
+ if ( isOrganizer ) {
+ /* We are the organizer. If there is more than one attendee, or if there is
+ * only one, and it's not the same as the organizer, ask the user to send
+ * mail. */
+ if ( incidence->attendees().count() > 1
+ || incidence->attendees().first()->email() != incidence->organizer().email() ) {
+
+ TQString txt;
+ switch( action ) {
+ case KOGlobals::INCIDENCEEDITED:
+ txt = i18n( "You changed the invitation \"%1\".\n"
+ "Do you want to email the attendees an update message?" ).
arg( incidence->summary() );
- } else {
- txt = i18n( "This incidence includes other people. "
- "Should an email be sent to the attendees?" );
+ break;
+ case KOGlobals::INCIDENCEDELETED:
+ Q_ASSERT( incidence->type() == "Event" || incidence->type() == "Todo" );
+ if ( incidence->type() == "Event" ) {
+ txt = i18n( "You removed the invitation \"%1\".\n"
+ "Do you want to email the attendees that the event is canceled?" ).
+ arg( incidence->summary() );
+ } else if ( incidence->type() == "Todo" ) {
+ txt = i18n( "You removed the invitation \"%1\".\n"
+ "Do you want to email the attendees that the todo is canceled?" ).
+ arg( incidence->summary() );
+ }
+ break;
+ case KOGlobals::INCIDENCEADDED:
+ if ( incidence->type() == "Event" ) {
+ txt = i18n( "The event \"%1\" includes other people.\n"
+ "Do you want to email the invitation to the attendees?" ).
+ arg( incidence->summary() );
+ } else if ( incidence->type() == "Todo" ) {
+ txt = i18n( "The todo \"%1\" includes other people.\n"
+ "Do you want to email the invitation to the attendees?" ).
+ arg( incidence->summary() );
+ } else {
+ txt = i18n( "This incidence includes other people. "
+ "Should an email be sent to the attendees?" );
+ }
+ break;
+ default:
+ kdError() << "Unsupported HowChanged action" << int( action ) << endl;
+ break;
}
- break;
- default:
- kdError() << "Unsupported HowChanged action" << int( action ) << endl;
- break;
- }
- rc = KMessageBox::questionYesNo(
- parent, txt, i18n( "Group Scheduling Email" ),
- KGuiItem( i18n( "Send Email" ) ), KGuiItem( i18n( "Do Not Send" ) ) );
- } else {
- return true;
- }
- } else if( incidence->type() == "Todo" ) {
- if( method == Scheduler::Request )
- // This is an update to be sent to the organizer
- method = Scheduler::Reply;
-
- // Ask if the user wants to tell the organizer about the current status
- TQString txt = i18n( "Do you want to send a status update to the "
- "organizer of this task?");
- rc = KMessageBox::questionYesNo( parent, txt, TQString::null, i18n("Send Update"), i18n("Do Not Send") );
- } else if( incidence->type() == "Event" ) {
- TQString txt;
- if ( attendeeStatusChanged && method == Scheduler::Request ) {
- txt = i18n( "Your status as an attendee of this event changed. "
- "Do you want to send a status update to the event organizer?" );
- method = Scheduler::Reply;
+ rc = KMessageBox::questionYesNo(
+ parent, txt, i18n( "Group Scheduling Email" ),
+ KGuiItem( i18n( "Send Email" ) ), KGuiItem( i18n( "Do Not Send" ) ) );
+ } else {
+ return true;
+ }
+ } else if( incidence->type() == "Todo" ) {
+ if( method == Scheduler::Request )
+ // This is an update to be sent to the organizer
+ method = Scheduler::Reply;
+
+ // Ask if the user wants to tell the organizer about the current status
+ TQString txt = i18n( "Do you want to send a status update to the "
+ "organizer of this task?");
rc = KMessageBox::questionYesNo( parent, txt, TQString::null, i18n("Send Update"), i18n("Do Not Send") );
- } else {
- if( action == KOGlobals::INCIDENCEDELETED ) {
- const TQStringList myEmails = KOPrefs::instance()->allEmails();
- bool askConfirmation = false;
- for ( TQStringList::ConstIterator it = myEmails.begin(); it != myEmails.end(); ++it ) {
- TQString email = *it;
- Attendee *me = incidence->attendeeByMail(email);
- if (me && (me->status()==KCal::Attendee::Accepted || me->status()==KCal::Attendee::Delegated)) {
- askConfirmation = true;
- break;
+ } else if( incidence->type() == "Event" ) {
+ TQString txt;
+ if ( attendeeStatusChanged && method == Scheduler::Request ) {
+ txt = i18n( "Your status as an attendee of this event changed. "
+ "Do you want to send a status update to the event organizer?" );
+ method = Scheduler::Reply;
+ rc = KMessageBox::questionYesNo( parent, txt, TQString::null, i18n("Send Update"), i18n("Do Not Send") );
+ } else {
+ if( action == KOGlobals::INCIDENCEDELETED ) {
+ const TQStringList myEmails = KOPrefs::instance()->allEmails();
+ bool askConfirmation = false;
+ for ( TQStringList::ConstIterator it = myEmails.begin(); it != myEmails.end(); ++it ) {
+ TQString email = *it;
+ Attendee *me = incidence->attendeeByMail(email);
+ if (me && (me->status()==KCal::Attendee::Accepted || me->status()==KCal::Attendee::Delegated)) {
+ askConfirmation = true;
+ break;
+ }
}
- }
- if ( !askConfirmation ) {
- return true;
- }
+ if ( !askConfirmation ) {
+ return true;
+ }
- txt = i18n( "You had previously accepted an invitation to this event. "
- "Do you want to send an updated response to the organizer "
- "declining the invitation?" );
- rc = KMessageBox::questionYesNo(
- parent, txt, i18n( "Group Scheduling Email" ),
- KGuiItem( i18n( "Send Update" ) ), KGuiItem( i18n( "Do Not Send" ) ) );
- setDoNotNotify( rc == KMessageBox::No );
- } else {
- txt = i18n( "You are not the organizer of this event. Editing it will "
- "bring your calendar out of sync with the organizer's calendar. "
- "Do you really want to edit it?" );
- rc = KMessageBox::warningYesNo( parent, txt );
- return ( rc == KMessageBox::Yes );
+ txt = i18n( "You had previously accepted an invitation to this event. "
+ "Do you want to send an updated response to the organizer "
+ "declining the invitation?" );
+ rc = KMessageBox::questionYesNo(
+ parent, txt, i18n( "Group Scheduling Email" ),
+ KGuiItem( i18n( "Send Update" ) ), KGuiItem( i18n( "Do Not Send" ) ) );
+ setDoNotNotify( rc == KMessageBox::No );
+ } else {
+ txt = i18n( "You are not the organizer of this event. Editing it will "
+ "bring your calendar out of sync with the organizer's calendar. "
+ "Do you really want to edit it?" );
+ rc = KMessageBox::warningYesNo( parent, txt );
+ return ( rc == KMessageBox::Yes );
+ }
}
+ } else {
+ kdWarning(5850) << "Groupware messages for Journals are not implemented yet!" << endl;
+ return true;
}
- } else {
- kdWarning(5850) << "Groupware messages for Journals are not implemented yet!" << endl;
- return true;
}
if ( rc == KMessageBox::Yes ) {
diff --git a/korganizer/kogroupware.h b/korganizer/kogroupware.h
index f6695de07..5df80a6ac 100644
--- a/korganizer/kogroupware.h
+++ b/korganizer/kogroupware.h
@@ -78,7 +78,8 @@ class KOGroupware : public QObject
bool sendICalMessage( TQWidget *parent, KCal::Scheduler::Method method,
Incidence* incidence,
KOGlobals::HowChanged action,
- bool attendeeStatusChanged );
+ bool attendeeStatusChanged,
+ int dontAskForGroupware = 0 );
/**
Send counter proposal message.