Version: unspecified (using Devel) OS: Linux version: 20101203.1203110-1maemo1 Reproducible: Always Steps to Reproduce: 1. A sends a invitation to the mobile account B 2. B conditional accepts. 3. B switchs to the calendar. 4. B tries to full accept or decline the event. Actual Results: I cannot find the accept/decline option in the edit event dialog. Expected Results: Should be possible to full accept or decline the event in the edit dialog.
commit e3edc761de969fe511c5761d4ecd0d4e800bc62d branch master Author: Tobias Koenig <tokoe@kde.org> Date: Tue Dec 28 13:10:41 2010 +0100 Make Invitation Bar available in mobile UI The accept/decline functionality seems to be broken in master right now though, have to cross-check with other developers... BUG: 258700 diff --git a/incidenceeditor-ng/eventortodomobile.ui b/incidenceeditor-ng/eventortodomobile.ui index b30d49e..c5e5fb8 100644 --- a/incidenceeditor-ng/eventortodomobile.ui +++ b/incidenceeditor-ng/eventortodomobile.ui @@ -11,7 +11,56 @@ </rect> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> + <item row="0" column="1" colspan="3"> + <widget class="QWidget" name="mInvitationBar" native="true"> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string comment="@info">You are Invited, what do you want to do?</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="mAcceptInvitationButton"> + <property name="toolTip"> + <string comment="@info:tooltip">Accept the invitation</string> + </property> + <property name="whatsThis"> + <string comment="@info:whatsthis">Click this button to accept the invitation.</string> + </property> + <property name="text"> + <string comment="@action:button Accept an invitation">Accept</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="mDeclineInvitationButton"> + <property name="text"> + <string comment="@action:button decline an invitation">Decline</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_13"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> <widget class="QLabel" name="label_3"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> @@ -42,7 +91,7 @@ </property> </widget> </item> - <item row="0" column="1" colspan="3"> + <item row="1" column="1" colspan="3"> <widget class="KLineEdit" name="mSummaryEdit"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> @@ -64,7 +113,7 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="label_4"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> @@ -83,7 +132,7 @@ </property> </widget> </item> - <item row="1" column="1" colspan="3"> + <item row="2" column="1" colspan="3"> <widget class="KLineEdit" name="mLocationEdit"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> @@ -105,7 +154,7 @@ </property> </widget> </item> - <item row="3" column="0"> + <item row="4" column="0"> <widget class="QLabel" name="mStartLabel"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> @@ -121,7 +170,7 @@ </property> </widget> </item> - <item row="3" column="1"> + <item row="4" column="1"> <widget class="QCheckBox" name="mStartCheck"> <property name="whatsThis"> <string comment="@info:whatsthis">Sets the start date for this to-do</string> @@ -131,7 +180,7 @@ </property> </widget> </item> - <item row="4" column="1" colspan="2"> + <item row="5" column="1" colspan="2"> <widget class="IncidenceEditorNG::KTimeZoneComboBox" name="mTimeZoneComboStart"> <property name="enabled"> <bool>false</bool> @@ -147,7 +196,7 @@ </property> </widget> </item> - <item row="5" column="0"> + <item row="6" column="0"> <widget class="QLabel" name="mEndLabel"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> @@ -163,7 +212,7 @@ </property> </widget> </item> - <item row="5" column="1"> + <item row="6" column="1"> <widget class="QCheckBox" name="mEndCheck"> <property name="whatsThis"> <string comment="@info:whatsthis">Sets the due date for this to-do.</string> @@ -173,7 +222,7 @@ </property> </widget> </item> - <item row="6" column="1" colspan="2"> + <item row="7" column="1" colspan="2"> <widget class="IncidenceEditorNG::KTimeZoneComboBox" name="mTimeZoneComboEnd"> <property name="enabled"> <bool>false</bool> @@ -189,7 +238,7 @@ </property> </widget> </item> - <item row="7" column="1" colspan="3"> + <item row="8" column="1" colspan="3"> <widget class="QCheckBox" name="mWholeDayCheck"> <property name="whatsThis"> <string comment="@info:whatsthis">Set if this to-do's start and due dates have times associated with them.</string> @@ -202,7 +251,7 @@ </property> </widget> </item> - <item row="2" column="1" colspan="3"> + <item row="3" column="1" colspan="3"> <widget class="QWidget" name="mCompletionPriorityWidget" native="true"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> @@ -320,7 +369,7 @@ </layout> </widget> </item> - <item row="9" column="0" colspan="4"> + <item row="10" column="0" colspan="4"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -333,7 +382,7 @@ </property> </spacer> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="mTaskLabel"> <property name="text"> <string comment="@label Task specific line in the dialog containing progress and priority">Progress:</string> @@ -343,14 +392,14 @@ </property> </widget> </item> - <item row="8" column="1" colspan="3"> + <item row="9" column="1" colspan="3"> <widget class="QCheckBox" name="mFreeBusyCheck"> <property name="text"> <string comment="@option:check">Blocks me for other events</string> </property> </widget> </item> - <item row="3" column="2"> + <item row="4" column="2"> <widget class="KPIM::KDateEdit" name="mStartDateEdit"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> @@ -381,7 +430,7 @@ </property> </widget> </item> - <item row="3" column="3"> + <item row="4" column="3"> <widget class="KPIM::KTimeEdit" name="mStartTimeEdit"> <property name="enabled"> <bool>false</bool> @@ -412,7 +461,7 @@ </property> </widget> </item> - <item row="5" column="2"> + <item row="6" column="2"> <widget class="KPIM::KDateEdit" name="mEndDateEdit"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> @@ -440,7 +489,7 @@ </property> </widget> </item> - <item row="5" column="3"> + <item row="6" column="3"> <widget class="KPIM::KTimeEdit" name="mEndTimeEdit"> <property name="enabled"> <bool>false</bool> diff --git a/mobile/lib/calendar/incidenceview.cpp b/mobile/lib/calendar/incidenceview.cpp index 7af9bb5..b5aa92d 100644 --- a/mobile/lib/calendar/incidenceview.cpp +++ b/mobile/lib/calendar/incidenceview.cpp @@ -21,6 +21,8 @@ #include "calendarhelper.h" #include "clockhelper.h" +#include "ui_eventortodomobile.h" + #include <calendarsupport/utils.h> #include <calendarsupport/kcalprefs.h> @@ -41,6 +43,7 @@ #include <qdeclarativeengine.h> #include <qdeclarativecontext.h> +#include <incidenceeditor-ng/editorconfig.h> #include <incidenceeditor-ng/incidencealarm.h> #include <incidenceeditor-ng/incidenceattachment.h> #include <incidenceeditor-ng/incidenceattendee.h> @@ -67,9 +70,11 @@ IncidenceView::IncidenceView( QWidget* parent ) , mEditor( new CombinedIncidenceEditor( parent ) ) , mEditorDateTime( 0 ) , mIncidenceMore( 0 ) + , mIncidenceGeneral( 0 ) , mDateWidget( 0 ) , mTimeWidget( 0 ) , mInvitationDispatcher( 0 ) + , mIncidenceAttendee( 0 ) { setAttribute(Qt::WA_DeleteOnClose); QDeclarativeContext *context = engine()->rootContext(); @@ -128,6 +133,8 @@ void IncidenceView::setCollectionCombo( Akonadi::CollectionComboBox *combo ) void IncidenceView::setGeneralEditor( MobileIncidenceGeneral *editorWidget ) { + mIncidenceGeneral = editorWidget; + Q_ASSERT( mItem.hasPayload<Incidence::Ptr>() ); Incidence::Ptr incidencePtr = CalendarSupport::incidence( mItem ); @@ -147,8 +154,31 @@ void IncidenceView::setGeneralEditor( MobileIncidenceGeneral *editorWidget ) mEditor->combine( editor ); mEditor->load( incidencePtr ); - if ( mIncidenceMore != 0 ) // IncidenceMore was set *before* general. + const QStringList allEmails = IncidenceEditorNG::EditorConfig::instance()->allEmails(); + const KCalCore::Attendee::Ptr me = incidencePtr->attendeeByMails( allEmails ); + + if ( incidencePtr->attendeeCount() > 1 && + me && ( me->status() == KCalCore::Attendee::NeedsAction || + me->status() == KCalCore::Attendee::Tentative || + me->status() == KCalCore::Attendee::InProcess ) ) { + editorWidget->mUi->mInvitationBar->show(); + } else { + editorWidget->mUi->mInvitationBar->hide(); + } + + if ( mIncidenceMore != 0 ) { // IncidenceMore was set *before* general. initIncidenceMore(); + + connect( editorWidget->mUi->mAcceptInvitationButton, SIGNAL( clicked() ), + mIncidenceAttendee, SLOT( acceptForMe() ), Qt::UniqueConnection ); + connect( editorWidget->mUi->mDeclineInvitationButton, SIGNAL( clicked() ), + mIncidenceAttendee, SLOT( declineForMe() ), Qt::UniqueConnection ); + } + + connect( editorWidget->mUi->mAcceptInvitationButton, SIGNAL( clicked() ), + editorWidget->mUi->mInvitationBar, SLOT( hide() ) ); + connect( editorWidget->mUi->mDeclineInvitationButton, SIGNAL( clicked() ), + editorWidget->mUi->mInvitationBar, SLOT( hide() ) ); } void IncidenceView::showCalendar( QObject *obj ) @@ -205,8 +235,8 @@ void IncidenceView::initIncidenceMore() editor = new IncidenceEditorNG::IncidenceDescription( mIncidenceMore->mUi ); mEditor->combine( editor ); - editor = new IncidenceEditorNG::IncidenceAttendee( 0, mEditorDateTime, mIncidenceMore->mUi ); - mEditor->combine( editor ); + mIncidenceAttendee = new IncidenceEditorNG::IncidenceAttendee( 0, mEditorDateTime, mIncidenceMore->mUi ); + mEditor->combine( mIncidenceAttendee ); editor = new IncidenceEditorNG::IncidenceAlarm( mEditorDateTime, mIncidenceMore->mUi ); mEditor->combine( editor ); @@ -226,8 +256,16 @@ void IncidenceView::initIncidenceMore() void IncidenceView::setMoreEditor( MobileIncidenceMore *editorWidget ) { mIncidenceMore = editorWidget; + if ( mEditorDateTime != 0 ) // IncidenceGeneral was not set yet. initIncidenceMore(); + + if ( mIncidenceGeneral ) { + connect( mIncidenceGeneral->mUi->mAcceptInvitationButton, SIGNAL( clicked() ), + mIncidenceAttendee, SLOT( acceptForMe() ), Qt::UniqueConnection ); + connect( mIncidenceGeneral->mUi->mDeclineInvitationButton, SIGNAL( clicked() ), + mIncidenceAttendee, SLOT( declineForMe() ), Qt::UniqueConnection ); + } } void IncidenceView::setDefaultCollection( const Akonadi::Collection &collection ) diff --git a/mobile/lib/calendar/incidenceview.h b/mobile/lib/calendar/incidenceview.h index 85836fb..eb325e1 100644 --- a/mobile/lib/calendar/incidenceview.h +++ b/mobile/lib/calendar/incidenceview.h @@ -38,6 +38,7 @@ class CollectionComboBox; } namespace IncidenceEditorNG { +class IncidenceAttendee; class IncidenceDateTime; class InvitationDispatcher; } @@ -107,11 +108,13 @@ class IncidenceView : public KDeclarativeFullScreenView, public IncidenceEditorN /// We need this because we can't rely on the order in which those two are added. MobileIncidenceMore *mIncidenceMore; + MobileIncidenceGeneral *mIncidenceGeneral; KPIM::KDateEdit *mDateWidget; KPIM::KTimeEdit *mTimeWidget; IncidenceEditorNG::InvitationDispatcher *mInvitationDispatcher; + IncidenceEditorNG::IncidenceAttendee *mIncidenceAttendee; }; #endif // INCIDENCEVIEW_H
Calendar Touch (Windows CE) 2011-01-16 Test of the description: If I try to click on "Accept cond." in the invitation, nothing happens. Reopened.
This works, you have to click exactly though otherwise the click is taken as a scroll action and nothing happens (except scrolling).
There are buttons in the event editor of a conditionally accepted event, but they do not work as expected. They really change you to the organizer and do not send the right update email to the organizer.
Kontat Touch Windows CE 20110218 22:55 Test of the description passed. Entering the update mail, changes the status and not the organizer. Verified