summaryrefslogtreecommitdiffstats
path: root/kmail/filterimporterexporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/filterimporterexporter.cpp')
-rw-r--r--kmail/filterimporterexporter.cpp166
1 files changed, 99 insertions, 67 deletions
diff --git a/kmail/filterimporterexporter.cpp b/kmail/filterimporterexporter.cpp
index bfe40170c..c5780431d 100644
--- a/kmail/filterimporterexporter.cpp
+++ b/kmail/filterimporterexporter.cpp
@@ -38,74 +38,105 @@
#include <kfiledialog.h>
#include <kdialogbase.h>
#include <klistview.h>
+#include <kpushbutton.h>
#include <tqregexp.h>
+#include <tqlayout.h>
using namespace KMail;
-class FilterSelectionDialog : public KDialogBase
+FilterSelectionDialog::FilterSelectionDialog( TQWidget * parent )
+ :KDialogBase( parent, "filterselection", true, i18n("Select Filters"), Ok|Cancel, Ok, true ),
+ wasCancelled( false )
{
-public:
- FilterSelectionDialog( TQWidget * parent = 0 )
- :KDialogBase( parent, "filterselection", true, i18n("Select Filters"), Ok|Cancel, Ok, true ),
- wasCancelled( false )
- {
- filtersListView = new KListView( this );
- setMainWidget(filtersListView);
- filtersListView->setSorting( -1 );
- filtersListView->setSelectionMode( TQListView::NoSelection );
- filtersListView->addColumn( i18n("Filters"), 300 );
- filtersListView->setFullWidth( true );
- resize( 300, 350 );
- }
+ TQWidget *w = new TQWidget( this );
+ TQVBoxLayout *top = new TQVBoxLayout( w );
+
+ filtersListView = new KListView( w );
+ top->addWidget( filtersListView );
+ setMainWidget(w);
+ filtersListView->setSorting( -1 );
+ filtersListView->setSelectionMode( TQListView::NoSelection );
+ filtersListView->addColumn( i18n("Filters"), 300 );
+ filtersListView->setFullWidth( true );
+ TQHBoxLayout *buttonLayout = new TQHBoxLayout( this );
+ top->addLayout( buttonLayout );
+ selectAllButton = new KPushButton( i18n( "Select All" ), w );
+ buttonLayout->addWidget( selectAllButton );
+ unselectAllButton = new KPushButton( i18n( "Unselect All" ), w );
+ buttonLayout->addWidget( unselectAllButton );
+ connect( selectAllButton, TQT_SIGNAL( clicked() ), this, TQT_SLOT( slotSelectAllButton() ) );
+ connect( unselectAllButton, TQT_SIGNAL( clicked() ), this, TQT_SLOT( slotUnselectAllButton() ) );
+ resize( 300, 350 );
+}
- virtual ~FilterSelectionDialog()
- {
- }
-
- virtual void slotCancel()
- {
- wasCancelled = true;
- KDialogBase::slotCancel();
- }
-
- bool cancelled()
- {
- return wasCancelled;
- }
+FilterSelectionDialog::~FilterSelectionDialog()
+{
+}
- void setFilters( const TQValueList<KMFilter*>& filters )
- {
- originalFilters = filters;
- filtersListView->clear();
- TQValueListConstIterator<KMFilter*> it = filters.constEnd();
- while ( it != filters.constBegin() ) {
- --it;
- KMFilter* filter = *it;
- TQCheckListItem* item = new TQCheckListItem( filtersListView, filter->name(), TQCheckListItem::CheckBox );
- item->setOn( true );
- }
- }
-
- TQValueList<KMFilter*> selectedFilters() const
- {
- TQValueList<KMFilter*> filters;
- TQListViewItemIterator it( filtersListView );
- int i = 0;
- while( it.current() ) {
- TQCheckListItem* item = static_cast<TQCheckListItem*>( it.current() );
- if ( item->isOn() )
- filters << originalFilters[i];
- ++i; ++it;
- }
- return filters;
- }
-private:
- KListView *filtersListView;
- TQValueList<KMFilter*> originalFilters;
- bool wasCancelled;
-};
+void FilterSelectionDialog::slotCancel()
+{
+ wasCancelled = true;
+ KDialogBase::slotCancel();
+}
+
+bool FilterSelectionDialog::cancelled()
+{
+ return wasCancelled;
+}
+
+void FilterSelectionDialog::setFilters( const TQValueList<KMFilter*>& filters )
+{
+ if ( filters.isEmpty() )
+ {
+ enableButtonOK( false );
+ return;
+ }
+ originalFilters = filters;
+ filtersListView->clear();
+ TQValueListConstIterator<KMFilter*> it = filters.constEnd();
+ while ( it != filters.constBegin() ) {
+ --it;
+ KMFilter* filter = *it;
+ TQCheckListItem* item = new TQCheckListItem( filtersListView, filter->name(), TQCheckListItem::CheckBox );
+ item->setOn( true );
+ }
+}
+
+TQValueList<KMFilter*> FilterSelectionDialog::selectedFilters() const
+{
+ TQValueList<KMFilter*> filters;
+ TQListViewItemIterator it( filtersListView );
+ int i = 0;
+ while( it.current() ) {
+ TQCheckListItem* item = static_cast<TQCheckListItem*>( it.current() );
+ if ( item->isOn() )
+ filters << originalFilters[i];
+ ++i; ++it;
+ }
+ return filters;
+}
+
+void FilterSelectionDialog::slotUnselectAllButton()
+{
+ TQListViewItemIterator it( filtersListView );
+ while( it.current() ) {
+ TQCheckListItem* item = static_cast<TQCheckListItem*>( it.current() );
+ item->setOn( false );
+ ++it;
+ }
+}
+
+void FilterSelectionDialog::slotSelectAllButton()
+{
+ TQListViewItemIterator it( filtersListView );
+ while( it.current() ) {
+ TQCheckListItem* item = static_cast<TQCheckListItem*>( it.current() );
+ item->setOn( true );
+ ++it;
+ }
+}
/* static */
TQValueList<KMFilter*> FilterImporterExporter::readFiltersFromConfig( KConfig* config, bool bPopFilter )
@@ -116,7 +147,7 @@ TQValueList<KMFilter*> FilterImporterExporter::readFiltersFromConfig( KConfig* c
numFilters = config->readNumEntry("popfilters",0);
else
numFilters = config->readNumEntry("filters",0);
-
+
TQValueList<KMFilter*> filters;
for ( int i=0 ; i < numFilters ; ++i ) {
TQString grpName;
@@ -136,7 +167,7 @@ TQValueList<KMFilter*> FilterImporterExporter::readFiltersFromConfig( KConfig* c
return filters;
}
-/* static */
+/* static */
void FilterImporterExporter::writeFiltersToConfig( const TQValueList<KMFilter*>& filters, KConfig* config, bool bPopFilter )
{
// first, delete all groups:
@@ -145,7 +176,7 @@ void FilterImporterExporter::writeFiltersToConfig( const TQValueList<KMFilter*>&
for ( TQStringList::Iterator it = filterGroups.begin() ;
it != filterGroups.end() ; ++it )
config->deleteGroup( *it );
-
+
int i = 0;
for ( TQValueListConstIterator<KMFilter*> it = filters.constBegin() ;
it != filters.constEnd() ; ++it ) {
@@ -180,9 +211,9 @@ FilterImporterExporter::~FilterImporterExporter()
TQValueList<KMFilter*> FilterImporterExporter::importFilters()
{
TQString fileName = KFileDialog::getOpenFileName( TQDir::homeDirPath(), TQString::null, mParent, i18n("Import Filters") );
- if ( fileName.isEmpty() )
+ if ( fileName.isEmpty() )
return TQValueList<KMFilter*>(); // cancel
-
+
{ // scoping
TQFile f( fileName );
if ( !f.open( IO_ReadOnly ) ) {
@@ -190,7 +221,7 @@ TQValueList<KMFilter*> FilterImporterExporter::importFilters()
return TQValueList<KMFilter*>();
}
}
-
+
KConfig config( fileName );
TQValueList<KMFilter*> imported = readFiltersFromConfig( &config, mPopFilter );
FilterSelectionDialog dlg( mParent );
@@ -202,10 +233,10 @@ TQValueList<KMFilter*> FilterImporterExporter::importFilters()
void FilterImporterExporter::exportFilters(const TQValueList<KMFilter*> & filters )
{
KURL saveUrl = KFileDialog::getSaveURL( TQDir::homeDirPath(), TQString::null, mParent, i18n("Export Filters") );
-
+
if ( saveUrl.isEmpty() || !Util::checkOverwrite( saveUrl, mParent ) )
return;
-
+
KConfig config( saveUrl.path() );
FilterSelectionDialog dlg( mParent );
dlg.setFilters( filters );
@@ -214,3 +245,4 @@ void FilterImporterExporter::exportFilters(const TQValueList<KMFilter*> & filter
writeFiltersToConfig( dlg.selectedFilters(), &config, mPopFilter );
}
+#include "filterimporterexporter.moc"