30 #include <calendarsupport/categoryconfig.h>
32 #include <incidenceeditor-ng/categoryselectdialog.h>
34 #include <KCalCore/CalFilter>
36 #include <KMessageBox>
41 setCaption( i18nc(
"@title::window",
"Edit Calendar Filters" ) );
42 setButtons( Ok | Apply | Cancel );
43 setMainWidget( mFilterEdit =
new FilterEdit( filters,
this ) );
49 connect(
this, SIGNAL(okClicked()),
this, SLOT(
slotOk()) );
50 connect(
this, SIGNAL(applyClicked()),
this, SLOT(
slotApply()) );
82 enableButton( Ok, consistent );
83 enableButtonApply( consistent );
87 :
QWidget( parent ), mCurrent( 0 ), mCategorySelectDialog( 0 )
90 searchline->setListWidget( mRulesList );
91 mDetailsFrame->setEnabled(
false );
93 mNewButton->setWhatsThis(
94 i18nc(
"@info:whatsthis",
95 "Press this button to define a new filter." ) );
96 mDeleteButton->setWhatsThis(
97 i18nc(
"@info:whatsthis",
98 "Press this button to remove the currently active filter." ) );
100 connect( mRulesList, SIGNAL(itemSelectionChanged()),
101 this, SLOT(filterSelected()) );
102 connect( mNewButton, SIGNAL(clicked()),
103 SLOT(bNewPressed()) );
104 connect( mDeleteButton, SIGNAL(clicked()),
105 SLOT(bDeletePressed()) );
106 connect( mNameLineEdit, SIGNAL(textChanged(QString)),
107 SLOT(updateSelectedName(QString)) );
108 connect( mCatEditButton, SIGNAL(clicked()), SLOT(editCategorySelection()) );
109 connect( mCompletedCheck, SIGNAL(toggled(
bool)),
110 mCompletedTimeSpanLabel, SLOT(setEnabled(
bool)) );
111 connect( mCompletedCheck, SIGNAL(toggled(
bool)),
112 mCompletedTimeSpan, SLOT(setEnabled(
bool)) );
123 qDebug() <<
" FilterEdit::updateFilterList() :" << mFilters;
125 qDebug() <<
" mFilters->empty() :" << mFilters->empty();
127 if ( !mFilters || mFilters->empty() ) {
128 mDetailsFrame->setEnabled(
false );
131 QList<KCalCore::CalFilter*>::iterator i;
132 for ( i = mFilters->begin(); i != mFilters->end(); ++i ) {
134 mRulesList->addItem( (*i)->name() );
137 if ( mRulesList->currentRow() != -1 ) {
138 KCalCore::CalFilter *f = mFilters->at( mRulesList->currentRow() );
145 if ( mFilters && mFilters->count() > 0 && !mCurrent ) {
146 filterSelected( mFilters->at( 0 ) );
149 mDeleteButton->setEnabled( !mFilters->isEmpty() );
159 mCurrent->setName( mNameLineEdit->text() );
161 if ( mCompletedCheck->isChecked() ) {
162 criteria |= KCalCore::CalFilter::HideCompletedTodos;
164 if ( mRecurringCheck->isChecked() ) {
165 criteria |= KCalCore::CalFilter::HideRecurring;
167 if ( mCatShowCheck->isChecked() ) {
168 criteria |= KCalCore::CalFilter::ShowCategories;
170 if ( mHideInactiveTodosCheck->isChecked() ) {
171 criteria |= KCalCore::CalFilter::HideInactiveTodos;
173 if ( mHideTodosNotAssignedToMeCheck->isChecked() ) {
174 criteria |= KCalCore::CalFilter::HideNoMatchingAttendeeTodos;
176 mCurrent->setCriteria( criteria );
177 mCurrent->setCompletedTimeSpan( mCompletedTimeSpan->value() );
179 QStringList categoryList;
180 for (
int i = 0; i < mCatList->count(); ++i ) {
181 QListWidgetItem *item = mCatList->item(i);
183 categoryList.append( item->text() );
186 mCurrent->setCategoryList( categoryList );
190 void FilterEdit::filterSelected()
192 if ( mRulesList->currentRow() < mFilters->count() ) {
193 mDetailsFrame->setEnabled(
true );
194 filterSelected( mFilters->at( mRulesList->currentRow() ) );
198 void FilterEdit::filterSelected( KCalCore::CalFilter *filter )
200 if( !filter || filter == mCurrent ) {
203 kDebug() <<
"Selected filter" << filter->name();
207 mNameLineEdit->blockSignals(
true );
208 mNameLineEdit->setText( mCurrent->name() );
209 mNameLineEdit->blockSignals(
false );
210 mDetailsFrame->setEnabled(
true );
211 mCompletedCheck->setChecked( mCurrent->criteria() & KCalCore::CalFilter::HideCompletedTodos );
212 mCompletedTimeSpan->setValue( mCurrent->completedTimeSpan() );
213 mRecurringCheck->setChecked( mCurrent->criteria() & KCalCore::CalFilter::HideRecurring );
214 mHideInactiveTodosCheck->setChecked(
215 mCurrent->criteria() & KCalCore::CalFilter::HideInactiveTodos );
216 mHideTodosNotAssignedToMeCheck->setChecked(
217 mCurrent->criteria() & KCalCore::CalFilter::HideNoMatchingAttendeeTodos );
219 if ( mCurrent->criteria() & KCalCore::CalFilter::ShowCategories ) {
220 mCatShowCheck->setChecked(
true );
222 mCatHideCheck->setChecked(
true );
225 mCatList->addItems( mCurrent->categoryList() );
228 void FilterEdit::bNewPressed()
230 mDetailsFrame->setEnabled(
true );
232 KCalCore::CalFilter *newFilter =
233 new KCalCore::CalFilter( i18nc(
"@label default filter name",
234 "New Filter %1", mFilters->count() ) );
235 mFilters->append( newFilter );
237 mRulesList->setCurrentRow( mRulesList->count() - 1 );
241 void FilterEdit::bDeletePressed()
243 if ( !mRulesList->currentItem() ) {
246 if ( mFilters->isEmpty() ) {
250 if ( KMessageBox::warningContinueCancel(
253 "Do you really want to permanently remove the filter \"%1\"?", mCurrent->name() ),
254 i18nc(
"@title:window",
"Delete Filter?" ),
255 KStandardGuiItem::del() ) == KMessageBox::Cancel ) {
259 int selected = mRulesList->currentRow();
260 KCalCore::CalFilter *filter = mFilters->at( selected );
261 mFilters->removeAll( filter );
265 mRulesList->setCurrentRow( qMin( mRulesList->count() - 1, selected ) );
269 void FilterEdit::updateSelectedName(
const QString &newText )
271 mRulesList->blockSignals(
true );
272 QListWidgetItem *item = mRulesList->currentItem();
274 item->setText( newText );
276 mRulesList->blockSignals(
false );
279 foreach ( KCalCore::CalFilter *i, *mFilters ) {
280 if ( i && i->name().isEmpty() ) {
288 void FilterEdit::editCategorySelection()
294 if ( !mCategorySelectDialog ) {
295 CalendarSupport::CategoryConfig *cc =
297 mCategorySelectDialog =
new IncidenceEditorNG::CategorySelectDialog( cc,
this );
298 mCategorySelectDialog->setHelp( QLatin1String(
"categories-view"), QLatin1String(
"korganizer") );
299 mCategorySelectDialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Help );
300 connect( mCategorySelectDialog, SIGNAL(categoriesSelected(QStringList)),
301 SLOT(updateCategorySelection(QStringList)) );
308 mCategorySelectDialog->setAutoselectChildren(
false );
309 mCategorySelectDialog->setSelected( mCurrent->categoryList() );
310 mCategorySelectDialog->setAutoselectChildren(
true );
312 mCategorySelectDialog->show();
315 void FilterEdit::updateCategorySelection(
const QStringList &categories )
318 mCatList->addItems( categories );
319 mCurrent->setCategoryList( categories );
324 if ( mCategorySelectDialog ) {
325 mCategorySelectDialog->updateCategoryConfig();
329 #include "filtereditdialog.moc"
void dataConsistent(bool)
void updateCategoryConfig()
FilterEditDialog(QList< KCalCore::CalFilter * > *, QWidget *parent=0)
virtual ~FilterEditDialog()
static KOPrefs * instance()
Get instance of KOPrefs.
void updateCategoryConfig()
FilterEdit(QList< KCalCore::CalFilter * > *filters, QWidget *parent)
void setDialogConsistent(bool consistent)