23 #include "recurrenceactions.h"
25 #include "ui_recurrenceactionsscopewidget.h"
29 #include <KMessageBox>
33 #include <boost/shared_ptr.hpp>
35 using namespace KCalUtils;
36 using namespace KCalUtils::RecurrenceActions;
37 using namespace KCalCore;
39 class ScopeWidget :
public QWidget
42 ScopeWidget(
int availableChoices,
const KDateTime &dateTime, QWidget *parent )
43 : QWidget( parent ), mAvailableChoices( availableChoices )
47 if ( ( mAvailableChoices & PastOccurrences ) == 0 ) {
48 mUi.checkBoxPast->hide();
50 mUi.checkBoxPast->setText( i18nc(
"@option:check calendar items before a certain date",
54 if ( ( mAvailableChoices & SelectedOccurrence ) == 0 ) {
55 mUi.checkBoxSelected->hide();
57 mUi.checkBoxSelected->setText( i18nc(
"@option:check currently selected calendar item",
60 if ( ( mAvailableChoices & FutureOccurrences ) == 0 ) {
61 mUi.checkBoxFuture->hide();
63 mUi.checkBoxFuture->setText( i18nc(
"@option:check calendar items after a certain date",
69 void setMessage(
const QString &message );
70 void setIcon(
const QIcon &icon );
72 void setCheckedChoices(
int choices );
73 int checkedChoices()
const;
76 const int mAvailableChoices;
77 Ui_RecurrenceActionsScopeWidget mUi;
80 void ScopeWidget::setMessage(
const QString &message )
82 mUi.messageLabel->setText( message );
85 void ScopeWidget::setIcon(
const QIcon &icon )
88 option.initFrom(
this );
89 mUi.iconLabel->setPixmap(
90 icon.pixmap( style()->pixelMetric( QStyle::PM_MessageBoxIconSize, &option,
this ) ) );
93 void ScopeWidget::setCheckedChoices(
int choices )
96 choices &= mAvailableChoices;
98 mUi.checkBoxPast->setChecked( ( choices & PastOccurrences ) != 0 );
99 mUi.checkBoxSelected->setChecked( ( choices & SelectedOccurrence ) != 0 );
100 mUi.checkBoxFuture->setChecked( ( choices & FutureOccurrences ) != 0 );
103 int ScopeWidget::checkedChoices()
const
107 if ( mUi.checkBoxPast->isChecked() ) {
108 result |= PastOccurrences;
110 if ( mUi.checkBoxSelected->isChecked() ) {
111 result |= SelectedOccurrence;
113 if ( mUi.checkBoxFuture->isChecked() ) {
114 result |= FutureOccurrences;
121 const KDateTime &selectedOccurrence )
125 if ( incidence->recurrence()->recursOn( selectedOccurrence.date(),
126 selectedOccurrence.timeSpec() ) ) {
127 result |= SelectedOccurrence;
130 if ( incidence->recurrence()->getPreviousDateTime( selectedOccurrence ).isValid() ) {
131 result |= PastOccurrences;
134 if ( incidence->recurrence()->getNextDateTime( selectedOccurrence ).isValid() ) {
135 result |= FutureOccurrences;
142 const QString &message,
const QString &caption,
143 const KGuiItem &action,
int availableChoices,
144 int preselectedChoices, QWidget *parent )
146 QPointer<KDialog> dialog =
new KDialog( parent );
147 dialog->setCaption( caption );
148 dialog->setButtons( KDialog::Ok | KDialog::Cancel );
149 dialog->setDefaultButton( KDialog::Ok );
150 dialog->setButtonGuiItem( KDialog::Ok, action );
152 ScopeWidget *widget =
new ScopeWidget( availableChoices, selectedOccurrence, dialog );
153 dialog->setMainWidget( widget );
155 widget->setMessage( message );
156 widget->setIcon( widget->style()->standardIcon( QStyle::SP_MessageBoxQuestion ) );
157 widget->setCheckedChoices( preselectedChoices );
159 const int result = dialog->exec();
161 dialog->deleteLater();
164 if ( result == QDialog::Rejected ) {
168 return widget->checkedChoices();
172 const KGuiItem &actionSelected,
173 const KGuiItem &actionAll, QWidget *parent )
175 KDialog *dialog =
new KDialog( parent );
176 dialog->setCaption( caption );
177 dialog->setButtons( KDialog::Yes | KDialog::Ok | KDialog::Cancel );
178 dialog->setObjectName(
"RecurrenceActions::questionSelectedAllCancel" );
179 dialog->setDefaultButton( KDialog::Yes );
180 dialog->setButtonGuiItem( KDialog::Yes, actionSelected );
181 dialog->setButtonGuiItem( KDialog::Ok, actionAll );
183 bool checkboxResult =
false;
184 int result = KMessageBox::createKMessageBox(
186 QMessageBox::Question,
191 KMessageBox::Notify );
195 return SelectedOccurrence;
196 case QDialog::Accepted:
207 const QString &caption,
208 const KGuiItem &actionSelected,
209 const KGuiItem &actionFuture,
210 const KGuiItem &actionAll,
213 KDialog *dialog =
new KDialog( parent );
214 dialog->setCaption( caption );
215 dialog->setButtons( KDialog::Yes | KDialog::No | KDialog::Ok | KDialog::Cancel );
216 dialog->setObjectName(
"RecurrenceActions::questionSelectedFutureAllCancel" );
217 dialog->setDefaultButton( KDialog::Yes );
218 dialog->setButtonGuiItem( KDialog::Yes, actionSelected );
219 dialog->setButtonGuiItem( KDialog::No, actionFuture );
220 dialog->setButtonGuiItem( KDialog::Ok, actionAll );
222 bool checkboxResult =
false;
223 int result = KMessageBox::createKMessageBox(
225 QMessageBox::Question,
230 KMessageBox::Notify );
234 return SelectedOccurrence;
236 return FutureOccurrences;
237 case QDialog::Accepted: