summaryrefslogtreecommitdiffstats
path: root/src/app/Filter/generalfilter.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2025-08-28 22:44:34 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2025-08-31 23:25:26 +0900
commit086012dcad8a976a0dabbb7cbc20c9cb612cdfa9 (patch)
tree56c9bfcfd7cd13b17707dc8862f26932e9814973 /src/app/Filter/generalfilter.cpp
parent409e7f624d202c7f96b4d0ab2da1834135169f8b (diff)
downloadkrusader-master.tar.gz
krusader-master.zip
Restructure source foldersHEADmaster
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/app/Filter/generalfilter.cpp')
-rw-r--r--src/app/Filter/generalfilter.cpp536
1 files changed, 536 insertions, 0 deletions
diff --git a/src/app/Filter/generalfilter.cpp b/src/app/Filter/generalfilter.cpp
new file mode 100644
index 0000000..70be90f
--- /dev/null
+++ b/src/app/Filter/generalfilter.cpp
@@ -0,0 +1,536 @@
+/***************************************************************************
+ generalfilter.cpp - description
+ -------------------
+ copyright : (C) 2003 + by Shie Erlich & Rafi Yanai & Csaba Karai
+ e-mail : krusader@users.sourceforge.net
+ web site : http://krusader.sourceforge.net
+ ---------------------------------------------------------------------------
+ Description
+ ***************************************************************************
+
+ A
+
+ db dD d8888b. db db .d8888. .d8b. d8888b. d88888b d8888b.
+ 88 ,8P' 88 `8D 88 88 88' YP d8' `8b 88 `8D 88' 88 `8D
+ 88,8P 88oobY' 88 88 `8bo. 88ooo88 88 88 88ooooo 88oobY'
+ 88`8b 88`8b 88 88 `Y8b. 88~~~88 88 88 88~~~~~ 88`8b
+ 88 `88. 88 `88. 88b d88 db 8D 88 88 88 .8D 88. 88 `88.
+ YP YD 88 YD ~Y8888P' `8888Y' YP YP Y8888D' Y88888P 88 YD
+
+ S o u r c e F i l e
+
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "generalfilter.h"
+#include "filtertabs.h"
+#include "../krusader.h"
+#include "../VFS/vfs.h"
+
+#include <tdelocale.h>
+#include <tdefiledialog.h>
+#include <tdemessagebox.h>
+#include <kiconloader.h>
+#include <tqwhatsthis.h>
+#include <tqpushbutton.h>
+
+GeneralFilter::GeneralFilter( FilterTabs *tabs, int properties, TQWidget *parent, const char *name ) : TQWidget( parent, name ),
+ profileManager( 0 ), fltTabs( tabs )
+{
+ TQGridLayout *filterLayout = new TQGridLayout( this );
+ filterLayout->setSpacing( 6 );
+ filterLayout->setMargin( 11 );
+
+ this->properties = properties;
+
+ // Options for name filtering
+
+ TQGroupBox *nameGroup = new TQGroupBox( this, "nameGroup" );
+ nameGroup->setTitle( i18n( "File name" ) );
+ nameGroup->setColumnLayout(0, TQt::Vertical );
+ nameGroup->layout()->setSpacing( 0 );
+ nameGroup->layout()->setMargin( 0 );
+ TQGridLayout *nameGroupLayout = new TQGridLayout( nameGroup->layout() );
+ nameGroupLayout->setAlignment( TQt::AlignTop );
+ nameGroupLayout->setSpacing( 6 );
+ nameGroupLayout->setMargin( 11 );
+
+ searchForCase = new TQCheckBox( nameGroup, "searchForCase" );
+ searchForCase->setText( i18n( "&Case sensitive" ) );
+ searchForCase->setChecked( false );
+ nameGroupLayout->addWidget( searchForCase, 1, 2 );
+
+ TQLabel *searchForLabel = new TQLabel( nameGroup, "searchForLabel" );
+ searchForLabel->setText( i18n( "Search &for:" ) );
+ nameGroupLayout->addWidget( searchForLabel, 0, 0 );
+
+ searchFor = new KHistoryCombo( false, nameGroup, "searchFor" );
+ searchFor->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)7, (TQSizePolicy::SizeType)0, searchFor->sizePolicy().hasHeightForWidth() ) );
+ searchFor->setEditable( true );
+ searchFor->setDuplicatesEnabled( false );
+ searchFor->setMaxCount( 25 );
+ searchForLabel->setBuddy( searchFor );
+ nameGroupLayout->addMultiCellWidget( searchFor, 0, 0, 1, 2 );
+
+ TQString s = "<p><img src='toolbar|find'></p>" + i18n("<p>The filename filtering criteria is defined here.</p><p>You can make use of wildcards. Multiple patterns are separated by space (means logical OR) and patterns are excluded from the search using the pipe symbol.</p><p>If the pattern is ended with a slash (<code>*pattern*/</code>), that means that pattern relates to recursive search of directories.<ul><li><code>pattern</code> - means to search those files/directories that name is <code>pattern</code>, recursive search goes through all subdirectories independently of the value of <code>pattern</code></li><li><code>pattern/</code> - means to search all files/directories, but recursive search goes through/excludes the directories that name is <code>pattern</code></li></ul><p></p><p>It's allowed to use quotation marks for names that contain space. Filter <code>\"Program&nbsp;Files\"</code> searches out those files/directories that name is <code>Program&nbsp;Files</code>.</p><p>Examples:<ul><code><li>*.o</li><li>*.h *.c\?\?</li><li>*.cpp *.h | *.moc.cpp</li><li>* | CVS/ .svn/</li></code></ul><b>Note</b>: the search term '<code>text</code>' is equivalent to '<code>*text*</code>'.</p>");
+ TQWhatsThis::add(searchFor, s);
+ TQWhatsThis::add(searchForLabel, s);
+
+ TQLabel *searchType = new TQLabel( nameGroup, "searchType" );
+ searchType->setText( i18n( "&Of type:" ) );
+ nameGroupLayout->addWidget( searchType, 1, 0 );
+
+ ofType = new KComboBox( false, nameGroup, "ofType" );
+ ofType->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)7, (TQSizePolicy::SizeType)0, ofType->sizePolicy().hasHeightForWidth() ) );
+ ofType->setEditable( false );
+ searchType->setBuddy(ofType);
+ ofType->insertItem(i18n("All Files"));
+ ofType->insertItem(i18n("Archives"));
+ ofType->insertItem(i18n("Directories"));
+ ofType->insertItem(i18n("Image Files"));
+ ofType->insertItem(i18n("Text Files"));
+ ofType->insertItem(i18n("Video Files"));
+ ofType->insertItem(i18n("Audio Files"));
+
+ nameGroupLayout->addWidget( ofType, 1, 1 );
+ filterLayout->addWidget( nameGroup, 0, 0 );
+
+ middleLayout = new TQHBoxLayout();
+ middleLayout->setSpacing( 6 );
+ middleLayout->setMargin( 0 );
+ TQSpacerItem* middleSpacer = new TQSpacerItem( 1, 1, TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ middleLayout->addItem( middleSpacer );
+
+ if( properties & FilterTabs::HasProfileHandler )
+ {
+ // The profile handler
+
+ TQGroupBox *profileHandler = new TQGroupBox( this, "profileHandler" );
+ profileHandler->setTitle( i18n( "&Profile handler" ) );
+ profileHandler->setColumnLayout(0, TQt::Vertical );
+ profileHandler->layout()->setSpacing( 0 );
+ profileHandler->layout()->setMargin( 0 );
+ TQGridLayout *profileLayout = new TQGridLayout( profileHandler->layout() );
+ profileLayout->setAlignment( TQt::AlignTop );
+ profileLayout->setSpacing( 6 );
+ profileLayout->setMargin( 11 );
+
+ profileListBox = new TQListBox( profileHandler, "profileListBox" );
+ profileLayout->addMultiCellWidget( profileListBox, 0, 3, 0, 0 );
+
+ profileAddBtn = new TQPushButton( i18n( "&Add" ), profileHandler, "profileAddBtn" );
+ profileLayout->addWidget( profileAddBtn, 0, 1 );
+
+ profileLoadBtn = new TQPushButton( i18n( "&Load" ), profileHandler, "profileLoadBtn" );
+ profileLoadBtn->setEnabled( false );
+ profileLayout->addWidget( profileLoadBtn, 1, 1 );
+
+ profileOverwriteBtn = new TQPushButton( i18n( "&Overwrite" ), profileHandler, "profileOverwriteBtn" );
+ profileOverwriteBtn->setEnabled( false );
+ profileLayout->addWidget( profileOverwriteBtn, 2, 1 );
+
+ profileRemoveBtn = new TQPushButton( i18n( "&Remove" ), profileHandler, "profileRemoveBtn" );
+ profileRemoveBtn->setEnabled( false );
+ profileLayout->addWidget( profileRemoveBtn, 3, 1 );
+
+ profileManager = new ProfileManager( "SelectionProfile", this, "selectionProfileManager" );
+ profileManager->hide();
+
+ middleLayout->addWidget( profileHandler );
+
+ refreshProfileListBox();
+ }
+
+ if( properties & FilterTabs::HasSearchIn )
+ {
+ // Options for search in
+
+ TQGroupBox *searchInGroup = new TQGroupBox( this, "searchInGroup" );
+ searchInGroup->setTitle( i18n( "&Search in" ) );
+ searchInGroup->setColumnLayout(0, TQt::Vertical );
+ searchInGroup->layout()->setSpacing( 0 );
+ searchInGroup->layout()->setMargin( 0 );
+ TQGridLayout *searchInLayout = new TQGridLayout( searchInGroup->layout() );
+ searchInLayout->setAlignment( TQt::AlignTop );
+ searchInLayout->setSpacing( 6 );
+ searchInLayout->setMargin( 11 );
+
+ searchIn = new KURLListRequester( searchInGroup, "searchIn" );
+ searchInLayout->addWidget( searchIn, 0, 0 );
+
+ middleLayout->addWidget( searchInGroup );
+ }
+
+ if( properties & FilterTabs::HasDontSearchIn )
+ {
+ // Options for don't search in
+
+ TQGroupBox *dontSearchInGroup = new TQGroupBox( this, "dontSearchInGroup" );
+ dontSearchInGroup->setTitle( i18n( "&Don't search in" ) );
+ dontSearchInGroup->setColumnLayout(0, TQt::Vertical );
+ dontSearchInGroup->layout()->setSpacing( 0 );
+ dontSearchInGroup->layout()->setMargin( 0 );
+ TQGridLayout *dontSearchInLayout = new TQGridLayout( dontSearchInGroup->layout() );
+ dontSearchInLayout->setAlignment( TQt::AlignTop );
+ dontSearchInLayout->setSpacing( 6 );
+ dontSearchInLayout->setMargin( 11 );
+
+ dontSearchIn = new KURLListRequester( dontSearchInGroup, "dontSearchIn" );
+ dontSearchInLayout->addWidget( dontSearchIn, 0, 0 );
+
+ middleLayout->addWidget( dontSearchInGroup );
+ }
+
+ filterLayout->addLayout( middleLayout, 1, 0 );
+
+ // Options for containing text
+
+ TQGroupBox *containsGroup = new TQGroupBox( this, "containsGroup" );
+ containsGroup->setTitle( i18n( "Containing text" ) );
+ containsGroup->setColumnLayout(0, TQt::Vertical );
+ containsGroup->layout()->setSpacing( 0 );
+ containsGroup->layout()->setMargin( 0 );
+ TQGridLayout *containsLayout = new TQGridLayout( containsGroup->layout() );
+ containsLayout->setAlignment( TQt::AlignTop );
+ containsLayout->setSpacing( 6 );
+ containsLayout->setMargin( 11 );
+
+ TQHBoxLayout *containsTextLayout = new TQHBoxLayout();
+ containsTextLayout->setSpacing( 6 );
+ containsTextLayout->setMargin( 0 );
+
+ TQLabel *containsLabel = new TQLabel( containsGroup, "containsLabel" );
+ containsLabel->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)0, (TQSizePolicy::SizeType)1, containsLabel->sizePolicy().hasHeightForWidth() ) );
+ containsLabel->setText( i18n( "&Text:" ) );
+ containsTextLayout->addWidget( containsLabel );
+
+ containsText = new KHistoryCombo( false, containsGroup, "containsText" );
+ containsText->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)7, (TQSizePolicy::SizeType)0, containsText->sizePolicy().hasHeightForWidth() ) );
+ containsText->setDuplicatesEnabled( false );
+ containsText->setMaxCount( 25 );
+ containsTextLayout->addWidget( containsText );
+ containsLabel->setBuddy(containsText);
+
+ containsLayout->addLayout( containsTextLayout, 0, 0 );
+
+ TQHBoxLayout *containsCbsLayout = new TQHBoxLayout();
+ containsCbsLayout->setSpacing( 6 );
+ containsCbsLayout->setMargin( 0 );
+ TQSpacerItem* cbSpacer = new TQSpacerItem( 20, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+ containsCbsLayout->addItem( cbSpacer );
+
+ remoteContentSearch = new TQCheckBox( containsGroup, "remoteContentSearch" );
+ remoteContentSearch->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)5, (TQSizePolicy::SizeType)0, remoteContentSearch->sizePolicy().hasHeightForWidth() ) );
+ remoteContentSearch->setText( i18n( "&Remote content search" ) );
+ remoteContentSearch->setChecked( false );
+ containsCbsLayout->addWidget( remoteContentSearch );
+ if( !( properties & FilterTabs::HasRemoteContentSearch ) )
+ remoteContentSearch->hide();
+
+ containsWholeWord = new TQCheckBox( containsGroup, "containsWholeWord" );
+ containsWholeWord->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)5, (TQSizePolicy::SizeType)0, containsWholeWord->sizePolicy().hasHeightForWidth() ) );
+ containsWholeWord->setText( i18n( "&Match whole word only" ) );
+ containsWholeWord->setChecked( false );
+ containsCbsLayout->addWidget( containsWholeWord );
+
+ containsTextCase = new TQCheckBox( containsGroup, "containsTextCase" );
+ containsTextCase->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)5, (TQSizePolicy::SizeType)0, containsTextCase->sizePolicy().hasHeightForWidth() ) );
+ containsTextCase->setText( i18n( "Cas&e sensitive" ) );
+ containsTextCase->setChecked( true );
+ containsCbsLayout->addWidget( containsTextCase );
+
+ containsLayout->addLayout( containsCbsLayout, 1, 0 );
+
+ filterLayout->addWidget( containsGroup, 2, 0 );
+
+ if( properties & FilterTabs::HasRecurseOptions )
+ {
+ // Options for recursive searching
+
+ TQHBoxLayout *recurseLayout = new TQHBoxLayout();
+ recurseLayout->setSpacing( 6 );
+ recurseLayout->setMargin( 0 );
+ TQSpacerItem* recurseSpacer = new TQSpacerItem( 20, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+ recurseLayout->addItem( recurseSpacer );
+
+ searchInDirs = new TQCheckBox( this, "searchInDirs" );
+ searchInDirs->setText( i18n( "Search in s&ubdirectories" ) );
+ searchInDirs->setChecked( true );
+ recurseLayout->addWidget( searchInDirs );
+
+ searchInArchives = new TQCheckBox( this, "searchInArchives" );
+ searchInArchives->setText( i18n( "Search in arch&ives" ) );
+ recurseLayout->addWidget( searchInArchives );
+
+ followLinks = new TQCheckBox( this, "followLinks" );
+ followLinks->setText( i18n( "Follow &links" ) );
+ recurseLayout->addWidget( followLinks );
+
+ filterLayout->addLayout( recurseLayout, 3, 0 );
+ }
+
+ // Connection table
+
+ if( properties & FilterTabs::HasProfileHandler )
+ {
+ connect( profileAddBtn, TQ_SIGNAL(clicked()) , this, TQ_SLOT( slotAddBtnClicked() ) );
+ connect( profileLoadBtn, TQ_SIGNAL(clicked()) , this, TQ_SLOT( slotLoadBtnClicked() ) );
+ connect( profileOverwriteBtn, TQ_SIGNAL(clicked()) , this, TQ_SLOT( slotOverwriteBtnClicked() ) );
+ connect( profileRemoveBtn, TQ_SIGNAL(clicked()) , this, TQ_SLOT( slotRemoveBtnClicked() ) );
+ connect( profileListBox, TQ_SIGNAL(doubleClicked(TQListBoxItem *)) , this, TQ_SLOT( slotProfileDoubleClicked(TQListBoxItem *) ) );
+ connect( profileManager, TQ_SIGNAL(loadFromProfile(TQString )), fltTabs, TQ_SLOT( loadFromProfile(TQString ) ) );
+ connect( profileManager, TQ_SIGNAL(saveToProfile(TQString )), fltTabs, TQ_SLOT( saveToProfile(TQString ) ) );
+ }
+
+ connect( searchFor, TQ_SIGNAL(activated(const TQString&)), searchFor, TQ_SLOT(addToHistory(const TQString&)));
+ connect( containsText, TQ_SIGNAL(activated(const TQString&)), containsText, TQ_SLOT(addToHistory(const TQString&)));
+
+ // load the completion and history lists
+ // ==> search for
+ krConfig->setGroup("Search");
+ TQStringList list = krConfig->readListEntry("SearchFor Completion");
+ searchFor->completionObject()->setItems(list);
+ list = krConfig->readListEntry("SearchFor History");
+ searchFor->setHistoryItems(list);
+ // ==> grep
+ krConfig->setGroup("Search");
+ list = krConfig->readListEntry("ContainsText Completion");
+ containsText->completionObject()->setItems(list);
+ list = krConfig->readListEntry("ContainsText History");
+ containsText->setHistoryItems(list);
+
+ setTabOrder( searchFor, containsText ); // search for -> content
+ setTabOrder( containsText, searchType ); // content -> search type
+}
+
+GeneralFilter::~GeneralFilter()
+{
+ // save the history combos
+ // ==> search for
+ TQStringList list = searchFor->completionObject()->items();
+ krConfig->setGroup("Search");
+ krConfig->writeEntry("SearchFor Completion", list);
+ list = searchFor->historyItems();
+ krConfig->writeEntry("SearchFor History", list);
+ // ==> grep text
+ list = containsText->completionObject()->items();
+ krConfig->setGroup("Search");
+ krConfig->writeEntry("ContainsText Completion", list);
+ list = containsText->historyItems();
+ krConfig->writeEntry("ContainsText History", list);
+
+ krConfig->sync();
+}
+
+bool GeneralFilter::fillQuery( KRQuery *query )
+{
+ // check that we have (at least) what to search, and where to search in
+ if (searchFor->currentText().simplifyWhiteSpace().isEmpty()) {
+ KMessageBox::error(this ,i18n("No search criteria entered!"));
+ searchFor->setFocus();
+ return false;
+ }
+
+ // now fill the query
+
+ query->setNameFilter( searchFor->currentText().stripWhiteSpace(), searchForCase->isChecked() );
+
+ bool remoteContent = (properties & FilterTabs::HasRemoteContentSearch ) ?
+ remoteContentSearch->isChecked() : false;
+
+ query->setContent( containsText->currentText(),
+ containsTextCase->isChecked(),
+ containsWholeWord->isChecked(),
+ remoteContent );
+
+ if (ofType->currentText()!=i18n("All Files"))
+ query->setMimeType( ofType->currentText() );
+ else query->setMimeType( TQString() );
+
+ if ( properties & FilterTabs::HasRecurseOptions )
+ {
+ query->setSearchInArchives( searchInArchives->isChecked() );
+ query->setRecursive( searchInDirs->isChecked() );
+ query->setFollowLinks( followLinks->isChecked() );
+
+ // create the lists
+ }
+ if( properties & FilterTabs::HasSearchIn )
+ {
+ query->setSearchInDirs( searchIn->urlList() );
+
+ // checking the lists
+
+ if (query->searchInDirs().isEmpty() ) { // we need a place to search in
+ KMessageBox::error(this ,i18n("Please specify a location to search in."));
+ searchIn->lineEdit()->setFocus();
+ return false;
+ }
+ }
+
+ if( properties & FilterTabs::HasDontSearchIn )
+ query->setDontSearchInDirs( dontSearchIn->urlList() );
+
+ return true;
+}
+
+void GeneralFilter::queryAccepted()
+{
+ searchFor->addToHistory(searchFor->currentText());
+ containsText->addToHistory(containsText->currentText());
+}
+
+void GeneralFilter::loadFromProfile( TQString name )
+{
+ krConfig->setGroup( name );
+
+ searchForCase->setChecked( krConfig->readBoolEntry( "Case Sensitive Search", false ) );
+ containsTextCase->setChecked( krConfig->readBoolEntry( "Case Sensitive Content", false ) );
+ remoteContentSearch->setChecked( krConfig->readBoolEntry( "Remote Content Search", false ) );
+ containsWholeWord->setChecked( krConfig->readBoolEntry( "Match Whole Word Only", false ) );
+ containsText->setEditText( krConfig->readEntry( "Contains Text", "" ) );
+ searchFor->setEditText( krConfig->readEntry( "Search For", "" ) );
+
+ TQString mime = krConfig->readEntry( "Mime Type", "" );
+ for( int i = ofType->count(); i >= 0; i-- )
+ {
+ ofType->setCurrentItem( i );
+ if( ofType->currentText() == mime )
+ break;
+ }
+
+ if( properties & FilterTabs::HasRecurseOptions )
+ {
+ searchInDirs->setChecked( krConfig->readBoolEntry( "Search In Subdirectories", true ) );
+ searchInArchives->setChecked( krConfig->readBoolEntry( "Search In Archives", false ) );
+ followLinks->setChecked( krConfig->readBoolEntry( "Follow Symlinks", false ) );
+ }
+
+ if( properties & FilterTabs::HasSearchIn )
+ {
+ searchIn->lineEdit()->setText( krConfig->readEntry( "Search In Edit", "" ) );
+
+ searchIn->listBox()->clear();
+ TQStringList searchInList = krConfig->readListEntry( "Search In List" );
+ if( !searchInList.isEmpty() )
+ searchIn->listBox()->insertStringList( searchInList );
+ }
+
+ if( properties & FilterTabs::HasDontSearchIn )
+ {
+ dontSearchIn->lineEdit()->setText( krConfig->readEntry( "Dont Search In Edit", "" ) );
+
+ dontSearchIn->listBox()->clear();
+ TQStringList dontSearchInList = krConfig->readListEntry( "Dont Search In List" );
+ if( !dontSearchInList.isEmpty() )
+ dontSearchIn->listBox()->insertStringList( dontSearchInList );
+ }
+}
+
+void GeneralFilter::saveToProfile( TQString name )
+{
+ krConfig->setGroup( name );
+
+ krConfig->writeEntry( "Case Sensitive Search", searchForCase->isChecked() );
+ krConfig->writeEntry( "Case Sensitive Content", containsTextCase->isChecked() );
+ krConfig->writeEntry( "Remote Content Search", remoteContentSearch->isChecked() );
+ krConfig->writeEntry( "Match Whole Word Only", containsWholeWord->isChecked() );
+ krConfig->writeEntry( "Contains Text", containsText->currentText() );
+ krConfig->writeEntry( "Search For", searchFor->currentText() );
+
+ krConfig->writeEntry( "Mime Type", ofType->currentText() );
+
+ if( properties & FilterTabs::HasRecurseOptions )
+ {
+ krConfig->writeEntry( "Search In Subdirectories", searchInDirs->isChecked() );
+ krConfig->writeEntry( "Search In Archives", searchInArchives->isChecked() );
+ krConfig->writeEntry( "Follow Symlinks", followLinks->isChecked() );
+ }
+
+ if( properties & FilterTabs::HasSearchIn )
+ {
+ krConfig->writeEntry( "Search In Edit", searchIn->lineEdit()->text() );
+
+ TQStringList searchInList;
+ for ( TQListBoxItem *item = searchIn->listBox()->firstItem(); item != 0; item = item->next() )
+ searchInList.append( item->text().simplifyWhiteSpace() );
+ krConfig->writeEntry( "Search In List", searchInList );
+ }
+
+ if( properties & FilterTabs::HasDontSearchIn )
+ {
+ krConfig->writeEntry( "Dont Search In Edit", dontSearchIn->lineEdit()->text() );
+
+ TQStringList dontSearchInList;
+ for ( TQListBoxItem *item = dontSearchIn->listBox()->firstItem(); item != 0; item = item->next() )
+ dontSearchInList.append( item->text().simplifyWhiteSpace() );
+ krConfig->writeEntry( "Dont Search In List", dontSearchInList );
+ }
+}
+
+void GeneralFilter::refreshProfileListBox()
+{
+ profileListBox->clear();
+ profileListBox->insertStringList( ProfileManager::availableProfiles( "SelectionProfile" ) );
+
+ if( profileListBox->count() != 0 )
+ {
+ profileLoadBtn->setEnabled( true );
+ profileOverwriteBtn->setEnabled( true );
+ profileRemoveBtn->setEnabled( true );
+ }
+ else
+ {
+ profileLoadBtn->setEnabled( false );
+ profileOverwriteBtn->setEnabled( false );
+ profileRemoveBtn->setEnabled( false );
+ }
+}
+
+void GeneralFilter::slotAddBtnClicked()
+{
+ profileManager->newProfile( searchFor->currentText().simplifyWhiteSpace() );
+ refreshProfileListBox();
+}
+
+void GeneralFilter::slotOverwriteBtnClicked()
+{
+ TQListBoxItem *item = profileListBox->item( profileListBox->currentItem() );
+ if( item != 0 )
+ profileManager->overwriteProfile( item->text() );
+}
+
+void GeneralFilter::slotRemoveBtnClicked()
+{
+ TQListBoxItem *item = profileListBox->item( profileListBox->currentItem() );
+ if( item != 0 )
+ {
+ profileManager->deleteProfile( item->text() );
+ refreshProfileListBox();
+ }
+}
+
+void GeneralFilter::slotProfileDoubleClicked( TQListBoxItem *item )
+{
+ if( item != 0 )
+ {
+ TQString profileName = item->text();
+ profileManager->loadProfile( profileName );
+ fltTabs->close( true );
+ }
+}
+
+void GeneralFilter::slotLoadBtnClicked()
+{
+ TQListBoxItem *item = profileListBox->item( profileListBox->currentItem() );
+ if( item != 0 )
+ profileManager->loadProfile( item->text() );
+}
+
+#include "generalfilter.moc"