27 #include <tqpushbutton.h>
28 #include <tqcheckbox.h>
29 #include <tqbuttongroup.h>
30 #include <tqlineedit.h>
31 #include <tqradiobutton.h>
32 #include <tqlistbox.h>
33 #include <tqwhatsthis.h>
36 #include <tdelocale.h>
37 #include <tdemessagebox.h>
38 #include <knuminput.h>
40 #include <libkcal/calfilter.h>
41 #include <libtdepim/categoryselectdialog.h>
44 #include "filteredit_base.h"
46 #include "filtereditdialog.h"
47 #include "filtereditdialog.moc"
49 FilterEditDialog::FilterEditDialog( TQPtrList<CalFilter> *filters,
50 TQWidget *parent,
const char *name)
51 : KDialogBase( parent, name, false, i18n(
"Edit Calendar Filters"),
54 setMainWidget( mFilterEdit =
new FilterEdit(filters,
this));
56 connect(mFilterEdit, TQ_SIGNAL(dataConsistent(
bool)),
57 TQ_SLOT(setDialogConsistent(
bool)));
59 connect( mFilterEdit, TQ_SIGNAL( editCategories() ), TQ_SIGNAL( editCategories() ) );
60 connect( mFilterEdit, TQ_SIGNAL( filterChanged() ), TQ_SIGNAL( filterChanged() ) );
63 FilterEditDialog::~FilterEditDialog()
69 void FilterEditDialog::updateFilterList()
71 mFilterEdit->updateFilterList();
74 void FilterEditDialog::updateCategoryConfig()
76 mFilterEdit->updateCategoryConfig();
79 void FilterEditDialog::slotApply()
81 mFilterEdit->saveChanges();
84 void FilterEditDialog::slotOk()
90 void FilterEditDialog::setDialogConsistent(
bool consistent) {
91 enableButtonOK( consistent );
92 enableButtonApply( consistent );
95 FilterEdit::FilterEdit(TQPtrList<CalFilter> *filters, TQWidget *parent)
96 : FilterEdit_base( parent), current(0), mCategorySelectDialog( 0 )
99 TQWhatsThis::add( mNewButton, i18n(
"Press this button to define a new filter." ) );
100 TQWhatsThis::add( mDeleteButton, i18n(
"Press this button to remove the currently active filter." ) );
102 connect( mRulesList, TQ_SIGNAL(selectionChanged()),
this, TQ_SLOT(filterSelected()) );
103 connect( mNewButton, TQ_SIGNAL( clicked() ), TQ_SLOT( bNewPressed() ) );
104 connect( mDeleteButton, TQ_SIGNAL( clicked() ), TQ_SLOT( bDeletePressed() ) );
105 connect( mNameLineEdit, TQ_SIGNAL( textChanged(
const TQString &) ), TQ_SLOT( updateSelectedName(
const TQString &) ) );
106 connect( mCatEditButton, TQ_SIGNAL( clicked() ), TQ_SLOT( editCategorySelection() ) );
109 FilterEdit::~FilterEdit() {
113 void FilterEdit::updateFilterList()
120 emit(dataConsistent(
false));
123 mRulesList->insertItem( filter->
name() );
124 filter = mFilters->next();
127 CalFilter *f = mFilters->at( mRulesList->currentItem() );
128 if ( f ) filterSelected( f );
130 emit(dataConsistent(
true));
133 if(current == 0L && mFilters->count() > 0)
134 filterSelected(mFilters->at(0));
135 mDeleteButton->setEnabled( mFilters->count() > 1 );
138 void FilterEdit::saveChanges()
143 current->setName(mNameLineEdit->text());
145 if ( mCompletedCheck->isChecked() ) criteria |= CalFilter::HideCompleted;
146 if ( mRecurringCheck->isChecked() ) criteria |= CalFilter::HideRecurring;
147 if ( mCatShowCheck->isChecked() ) criteria |= CalFilter::ShowCategories;
148 if ( mHideInactiveTodosCheck->isChecked() ) criteria |= CalFilter::HideInactiveTodos;
149 if ( mHideTodosNotAssignedToMeCheck->isChecked() )
150 criteria |= CalFilter::HideTodosWithoutAttendeeInEmailList;
151 current->setCriteria( criteria );
152 current->setCompletedTimeSpan( mCompletedTimeSpan->value() );
154 TQStringList categoryList;
155 for( uint i = 0; i < mCatList->count(); ++i )
156 categoryList.append( mCatList->text( i ) );
157 current->setCategoryList( categoryList );
158 emit filterChanged();
161 void FilterEdit::filterSelected()
163 filterSelected(mFilters->at(mRulesList->currentItem()));
166 void FilterEdit::filterSelected(
CalFilter *filter)
168 if(filter == current)
return;
169 kdDebug(5850) <<
"Selected filter " << (filter!=0?filter->
name():
"") << endl;
173 mNameLineEdit->blockSignals(
true);
174 mNameLineEdit->setText(current->name());
175 mNameLineEdit->blockSignals(
false);
177 mCompletedCheck->setChecked( current->criteria() & CalFilter::HideCompleted );
178 mCompletedTimeSpan->setValue( current->completedTimeSpan() );
179 mRecurringCheck->setChecked( current->criteria() & CalFilter::HideRecurring );
180 mHideInactiveTodosCheck->setChecked( current->criteria() & CalFilter::HideInactiveTodos );
181 mHideTodosNotAssignedToMeCheck->setChecked(
182 current->criteria() & CalFilter::HideTodosWithoutAttendeeInEmailList );
183 mCategoriesButtonGroup->setButton( (current->criteria() & CalFilter::ShowCategories)?0:1 );
185 mCatList->insertStringList( current->categoryList() );
188 void FilterEdit::bNewPressed() {
190 mFilters->append( newFilter );
192 mRulesList->setSelected(mRulesList->count()-1,
true);
193 emit filterChanged();
196 void FilterEdit::bDeletePressed() {
197 if ( mRulesList->currentItem() < 0 )
return;
198 if ( mFilters->count() <= 1 )
return;
200 int result = KMessageBox::warningContinueCancel(
this,
201 i18n(
"This item will be permanently deleted."), i18n(
"Delete Confirmation"), KGuiItem(i18n(
"Delete"),
"edit-delete") );
203 if ( result != KMessageBox::Continue )
206 unsigned int selected = mRulesList->currentItem();
207 mFilters->remove( selected );
210 mRulesList->setSelected(TQMIN(mRulesList->count()-1, selected),
true);
211 emit filterChanged();
214 void FilterEdit::updateSelectedName(
const TQString &newText) {
215 mRulesList->blockSignals(
true );
216 mRulesList->changeItem(newText, mRulesList->currentItem());
217 mRulesList->blockSignals(
false );
220 while( allOk && filter ) {
221 if(filter->
name().isEmpty())
223 filter = mFilters->next();
225 emit dataConsistent(allOk);
228 void FilterEdit::editCategorySelection()
230 if( !current )
return;
231 if ( !mCategorySelectDialog ) {
232 mCategorySelectDialog =
new KPIM::CategorySelectDialog( KOPrefs::instance(),
this,
"filterCatSelect" );
233 connect( mCategorySelectDialog,
234 TQ_SIGNAL( categoriesSelected(
const TQStringList & ) ),
235 TQ_SLOT( updateCategorySelection(
const TQStringList & ) ) );
236 connect( mCategorySelectDialog, TQ_SIGNAL( editCategories() ),
237 TQ_SIGNAL( editCategories() ) );
240 mCategorySelectDialog->setSelected( current->categoryList() );
242 mCategorySelectDialog->show();
245 void FilterEdit::updateCategorySelection(
const TQStringList &categories )
248 mCatList->insertStringList(categories);
249 current->setCategoryList(categories);
252 void FilterEdit::updateCategoryConfig()
254 if ( mCategorySelectDialog ) mCategorySelectDialog->updateCategoryConfig();