summaryrefslogtreecommitdiffstats
path: root/kfind/kfind.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kfind/kfind.cpp')
-rw-r--r--kfind/kfind.cpp192
1 files changed, 192 insertions, 0 deletions
diff --git a/kfind/kfind.cpp b/kfind/kfind.cpp
new file mode 100644
index 000000000..93c646a91
--- /dev/null
+++ b/kfind/kfind.cpp
@@ -0,0 +1,192 @@
+/***********************************************************************
+ *
+ * Kfind.cpp
+ *
+ * This is KFind, released under GPL
+ *
+ * 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.
+ *
+ * KFind (c) 1998-2003 The KDE Developers
+ Martin Hartig
+ Stephan Kulow <coolo@kde.org>
+ Mario Weilguni <mweilguni@sime.com>
+ Alex Zepeda <zipzippy@sonic.net>
+ Miroslav Flídr <flidr@kky.zcu.cz>
+ Harri Porten <porten@kde.org>
+ Dima Rogozin <dima@mercury.co.il>
+ Carsten Pfeiffer <pfeiffer@kde.org>
+ Hans Petter Bieker <bieker@kde.org>
+ Waldo Bastian <bastian@kde.org>
+ Beppe Grimaldi <grimalkin@ciaoweb.it>
+ Eric Coquelle <coquelle@caramail.com>
+
+ **********************************************************************/
+
+#include <kpushbutton.h>
+#include <qlayout.h>
+#include <qvbox.h>
+
+#include <kdialog.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kseparator.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <kstdguiitem.h>
+
+#include "kftabdlg.h"
+#include "kquery.h"
+
+#include "kfind.moc"
+
+Kfind::Kfind(QWidget *parent, const char *name)
+ : QWidget( parent, name )
+{
+ kdDebug() << "Kfind::Kfind " << this << endl;
+ QBoxLayout * mTopLayout = new QBoxLayout( this, QBoxLayout::LeftToRight,
+ KDialog::marginHint(), KDialog::spacingHint() );
+
+ // create tabwidget
+ tabWidget = new KfindTabWidget( this );
+ mTopLayout->addWidget(tabWidget);
+
+ /*
+ * This is ugly. Might be a KSeparator bug, but it makes a small black
+ * pixel for me which is visually distracting (GS).
+ // create separator
+ KSeparator * mActionSep = new KSeparator( this );
+ mActionSep->setFocusPolicy( QWidget::ClickFocus );
+ mActionSep->setOrientation( QFrame::VLine );
+ mTopLayout->addWidget(mActionSep);
+ */
+
+ // create button box
+ QVBox * mButtonBox = new QVBox( this );
+ QVBoxLayout *lay = (QVBoxLayout*)mButtonBox->layout();
+ lay->addStretch(1);
+ mTopLayout->addWidget(mButtonBox);
+
+ mSearch = new KPushButton( KGuiItem(i18n("&Find"), "find"), mButtonBox );
+ mButtonBox->setSpacing( (tabWidget->sizeHint().height()-4*mSearch->sizeHint().height()) / 4);
+ connect( mSearch, SIGNAL(clicked()), this, SLOT( startSearch() ) );
+ mStop = new KPushButton( KGuiItem(i18n("Stop"), "stop"), mButtonBox );
+ connect( mStop, SIGNAL(clicked()), this, SLOT( stopSearch() ) );
+ mSave = new KPushButton( KStdGuiItem::saveAs(), mButtonBox );
+ connect( mSave, SIGNAL(clicked()), this, SLOT( saveResults() ) );
+
+ KPushButton * mClose = new KPushButton( KStdGuiItem::close(), mButtonBox );
+ connect( mClose, SIGNAL(clicked()), this, SIGNAL( destroyMe() ) );
+
+ // react to search requests from widget
+ connect( tabWidget, SIGNAL(startSearch()), this, SLOT( startSearch() ) );
+
+ mSearch->setEnabled(true); // Enable "Search"
+ mStop->setEnabled(false); // Disable "Stop"
+ mSave->setEnabled(false); // Disable "Save..."
+
+ dirlister=new KDirLister();
+}
+
+Kfind::~Kfind()
+{
+ stopSearch();
+ dirlister->stop();
+ delete dirlister;
+ kdDebug() << "Kfind::~Kfind" << endl;
+}
+
+void Kfind::setURL( const KURL &url )
+{
+ tabWidget->setURL( url );
+}
+
+void Kfind::startSearch()
+{
+ tabWidget->setQuery(query);
+ emit started();
+
+ //emit resultSelected(false);
+ //emit haveResults(false);
+
+ mSearch->setEnabled(false); // Disable "Search"
+ mStop->setEnabled(true); // Enable "Stop"
+ mSave->setEnabled(false); // Disable "Save..."
+
+ tabWidget->beginSearch();
+
+ dirlister->openURL(KURL(tabWidget->dirBox->currentText().stripWhiteSpace()));
+
+ query->start();
+}
+
+void Kfind::stopSearch()
+{
+ // will call KFindPart::slotResult, which calls searchFinished here
+ query->kill();
+}
+
+/*
+void Kfind::newSearch()
+{
+ // WABA: Not used any longer?
+ stopSearch();
+
+ tabWidget->setDefaults();
+
+ emit haveResults(false);
+ emit resultSelected(false);
+
+ setFocus();
+}
+*/
+
+void Kfind::searchFinished()
+{
+ mSearch->setEnabled(true); // Enable "Search"
+ mStop->setEnabled(false); // Disable "Stop"
+ // ## TODO mSave->setEnabled(true); // Enable "Save..."
+
+ tabWidget->endSearch();
+ setFocus();
+}
+
+
+void Kfind::saveResults()
+{
+ // TODO
+}
+
+void Kfind::setFocus()
+{
+ tabWidget->setFocus();
+}
+
+void Kfind::saveState( QDataStream *stream )
+{
+ query->kill();
+ *stream << tabWidget->nameBox->currentText();
+ *stream << tabWidget->dirBox->currentText();
+ *stream << tabWidget->typeBox->currentItem();
+ *stream << tabWidget->textEdit->text();
+ *stream << (int)( tabWidget->subdirsCb->isChecked() ? 0 : 1 );
+}
+
+void Kfind::restoreState( QDataStream *stream )
+{
+ QString namesearched, dirsearched,containing;
+ int typeIdx;
+ int subdirs;
+ *stream >> namesearched;
+ *stream >> dirsearched;
+ *stream >> typeIdx;
+ *stream >> containing;
+ *stream >> subdirs;
+ tabWidget->nameBox->insertItem( namesearched, 0);
+ tabWidget->dirBox->insertItem ( dirsearched, 0);
+ tabWidget->typeBox->setCurrentItem(typeIdx);
+ tabWidget->textEdit->setText ( containing );
+ tabWidget->subdirsCb->setChecked( ( subdirs==0 ? true : false ));
+}