⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generalfilter.cpp

📁 LINUX 下, 以 QT/KDE 写的档案管理员
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************                      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 <klocale.h>#include <kfiledialog.h>#include <kmessagebox.h>#include <kiconloader.h>#include <qwhatsthis.h>#include <qpushbutton.h>GeneralFilter::GeneralFilter( FilterTabs *tabs, int properties, QWidget *parent, const char *name ) : QWidget( parent, name ),    profileManager( 0 ), fltTabs( tabs ){  QGridLayout *filterLayout = new QGridLayout( this );  filterLayout->setSpacing( 6 );  filterLayout->setMargin( 11 );  this->properties = properties;  // Options for name filtering  QGroupBox *nameGroup = new QGroupBox( this, "nameGroup" );  nameGroup->setTitle( i18n( "File name" ) );  nameGroup->setColumnLayout(0, Qt::Vertical );  nameGroup->layout()->setSpacing( 0 );  nameGroup->layout()->setMargin( 0 );  QGridLayout *nameGroupLayout = new QGridLayout( nameGroup->layout() );  nameGroupLayout->setAlignment( Qt::AlignTop );  nameGroupLayout->setSpacing( 6 );  nameGroupLayout->setMargin( 11 );  searchForCase = new QCheckBox( nameGroup, "searchForCase" );  searchForCase->setText( i18n( "&Case sensitive" ) );  searchForCase->setChecked( false );  nameGroupLayout->addWidget( searchForCase, 1, 2 );  QLabel *searchForLabel = new QLabel( nameGroup, "searchForLabel" );  searchForLabel->setText( i18n( "Search &for:" ) );  nameGroupLayout->addWidget( searchForLabel, 0, 0 );  searchFor = new KHistoryCombo( false, nameGroup, "searchFor" );  searchFor->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, searchFor->sizePolicy().hasHeightForWidth() ) );  searchFor->setEditable( true );  searchFor->setDuplicatesEnabled( false );  searchFor->setMaxCount( 25 );  searchForLabel->setBuddy( searchFor );  nameGroupLayout->addMultiCellWidget( searchFor, 0, 0, 1, 2 );  QString 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>");  QWhatsThis::add(searchFor, s);  QWhatsThis::add(searchForLabel, s);  QLabel *searchType = new QLabel( nameGroup, "searchType" );  searchType->setText( i18n( "&Of type:" ) );  nameGroupLayout->addWidget( searchType, 1, 0 );  ofType = new KComboBox( false, nameGroup, "ofType" );  ofType->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::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 QHBoxLayout();  middleLayout->setSpacing( 6 );  middleLayout->setMargin( 0 );  QSpacerItem* middleSpacer = new QSpacerItem( 1, 1, QSizePolicy::Fixed, QSizePolicy::Fixed );  middleLayout->addItem( middleSpacer );  if( properties & FilterTabs::HasProfileHandler )  {    // The profile handler    QGroupBox *profileHandler = new QGroupBox( this, "profileHandler" );    profileHandler->setTitle( i18n( "&Profile handler" ) );    profileHandler->setColumnLayout(0, Qt::Vertical );    profileHandler->layout()->setSpacing( 0 );    profileHandler->layout()->setMargin( 0 );    QGridLayout *profileLayout = new QGridLayout( profileHandler->layout() );    profileLayout->setAlignment( Qt::AlignTop );    profileLayout->setSpacing( 6 );    profileLayout->setMargin( 11 );    profileListBox = new QListBox( profileHandler, "profileListBox" );    profileLayout->addMultiCellWidget( profileListBox, 0, 3, 0, 0 );    profileAddBtn = new QPushButton( i18n( "&Add" ), profileHandler, "profileAddBtn" );    profileLayout->addWidget( profileAddBtn, 0, 1 );    profileLoadBtn = new QPushButton( i18n( "&Load" ), profileHandler, "profileLoadBtn" );    profileLoadBtn->setEnabled( false );    profileLayout->addWidget( profileLoadBtn, 1, 1 );    profileOverwriteBtn = new QPushButton( i18n( "&Overwrite" ), profileHandler, "profileOverwriteBtn" );    profileOverwriteBtn->setEnabled( false );    profileLayout->addWidget( profileOverwriteBtn, 2, 1 );    profileRemoveBtn = new QPushButton( 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    QGroupBox *searchInGroup = new QGroupBox( this, "searchInGroup" );    searchInGroup->setTitle( i18n( "&Search in" ) );    searchInGroup->setColumnLayout(0, Qt::Vertical );    searchInGroup->layout()->setSpacing( 0 );    searchInGroup->layout()->setMargin( 0 );    QGridLayout *searchInLayout = new QGridLayout( searchInGroup->layout() );    searchInLayout->setAlignment( Qt::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    QGroupBox *dontSearchInGroup = new QGroupBox( this, "dontSearchInGroup" );    dontSearchInGroup->setTitle( i18n( "&Don't search in" ) );    dontSearchInGroup->setColumnLayout(0, Qt::Vertical );    dontSearchInGroup->layout()->setSpacing( 0 );    dontSearchInGroup->layout()->setMargin( 0 );    QGridLayout *dontSearchInLayout = new QGridLayout( dontSearchInGroup->layout() );    dontSearchInLayout->setAlignment( Qt::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  QGroupBox *containsGroup = new QGroupBox( this, "containsGroup" );  containsGroup->setTitle( i18n( "Containing text" ) );  containsGroup->setColumnLayout(0, Qt::Vertical );  containsGroup->layout()->setSpacing( 0 );  containsGroup->layout()->setMargin( 0 );  QGridLayout *containsLayout = new QGridLayout( containsGroup->layout() );  containsLayout->setAlignment( Qt::AlignTop );  containsLayout->setSpacing( 6 );  containsLayout->setMargin( 11 );  QHBoxLayout *containsTextLayout = new QHBoxLayout();  containsTextLayout->setSpacing( 6 );  containsTextLayout->setMargin( 0 );  QLabel *containsLabel = new QLabel( containsGroup, "containsLabel" );  containsLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)1, containsLabel->sizePolicy().hasHeightForWidth() ) );  containsLabel->setText( i18n( "&Text:" ) );  containsTextLayout->addWidget( containsLabel );  containsText = new KHistoryCombo( false, containsGroup, "containsText" );  containsText->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, containsText->sizePolicy().hasHeightForWidth() ) );  containsText->setDuplicatesEnabled( false );  containsText->setMaxCount( 25 );  containsTextLayout->addWidget( containsText );  containsLabel->setBuddy(containsText);  containsLayout->addLayout( containsTextLayout, 0, 0 );  QHBoxLayout *containsCbsLayout = new QHBoxLayout();  containsCbsLayout->setSpacing( 6 );  containsCbsLayout->setMargin( 0 );  QSpacerItem* cbSpacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );  containsCbsLayout->addItem( cbSpacer );  remoteContentSearch = new QCheckBox( containsGroup, "remoteContentSearch" );  remoteContentSearch->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::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 QCheckBox( containsGroup, "containsWholeWord" );  containsWholeWord->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, containsWholeWord->sizePolicy().hasHeightForWidth() ) );  containsWholeWord->setText( i18n( "&Match whole word only" ) );  containsWholeWord->setChecked( false );  containsCbsLayout->addWidget( containsWholeWord );  containsTextCase = new QCheckBox( containsGroup, "containsTextCase" );  containsTextCase->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::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    QHBoxLayout *recurseLayout = new QHBoxLayout();    recurseLayout->setSpacing( 6 );    recurseLayout->setMargin( 0 );    QSpacerItem* recurseSpacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );    recurseLayout->addItem( recurseSpacer );    searchInDirs = new QCheckBox( this, "searchInDirs" );    searchInDirs->setText( i18n( "Search in s&ubdirectories" ) );    searchInDirs->setChecked( true );    recurseLayout->addWidget( searchInDirs );    searchInArchives = new QCheckBox( this, "searchInArchives" );    searchInArchives->setText( i18n( "Search in arch&ives" ) );    recurseLayout->addWidget( searchInArchives );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -