summaryrefslogtreecommitdiffstats
path: root/src/searchresultsdlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/searchresultsdlg.cpp')
-rw-r--r--src/searchresultsdlg.cpp160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/searchresultsdlg.cpp b/src/searchresultsdlg.cpp
new file mode 100644
index 0000000..bb63fa5
--- /dev/null
+++ b/src/searchresultsdlg.cpp
@@ -0,0 +1,160 @@
+/***************************************************************************
+ *
+ * Copyright (C) 2005 Elad Lahav (elad_lahav@users.sourceforge.net)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ***************************************************************************/
+
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qradiobutton.h>
+#include "searchresultsdlg.h"
+
+int SearchResultsDlg::s_nType = PlainText;
+bool SearchResultsDlg::s_bCaseSensitive = true;
+bool SearchResultsDlg::s_bNegate = false;
+
+/**
+ * Class constructor.
+ * @param pParent The parent widget
+ * @param szName Optional widget name
+ */
+SearchResultsDlg::SearchResultsDlg(QWidget* pParent, const char* szName) :
+ SearchResultsLayout(pParent, szName, true, 0)
+{
+ // Select the last selected type radio button
+ switch (s_nType) {
+ case PlainText:
+ m_pTextRadio->setChecked(true);
+ break;
+
+ case RegExp:
+ m_pRegExpRadio->setChecked(true);
+ break;
+
+ case SimpRegExp:
+ m_pSimpRegExpRadio->setChecked(true);
+ break;
+ }
+
+ // Set the default value of the check-boxes
+ m_pCaseSenCheck->setChecked(s_bCaseSensitive);
+ m_pNegateCheck->setChecked(s_bNegate);
+
+ // Terminate the dialogue when either the "OK" or "Cancel" buttons are
+ // clicked
+ connect(m_pOKButton, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(m_pCancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+}
+
+/**
+ * Class destructor.
+ */
+SearchResultsDlg::~SearchResultsDlg()
+{
+}
+
+/**
+ * Determines the default column on which to search.
+ * The column's name appears in the column combo-box.
+ */
+void SearchResultsDlg::setColumn(int nCol)
+{
+ m_pColumnCB->setCurrentItem(nCol);
+}
+
+/**
+ * @return The selected column on which to perform the search
+ */
+int SearchResultsDlg::getColumn()
+{
+ return m_pColumnCB->currentItem();
+}
+
+/**
+ * Creates a regular expression based on the given pattern and type of search.
+ * @param re A regular expression object to set
+ */
+void SearchResultsDlg::getPattern(QRegExp& re)
+{
+ QString sPattern;
+
+ sPattern = m_pSearchEdit->text();
+
+ // Create the regular expression
+ switch (s_nType) {
+ case PlainText:
+ re.setPattern(QRegExp::escape(sPattern));
+ re.setWildcard(false);
+ break;
+
+ case RegExp:
+ re.setPattern(sPattern);
+ re.setWildcard(false);
+ break;
+
+ case SimpRegExp:
+ re.setPattern(sPattern);
+ re.setWildcard(true);
+ break;
+ }
+
+ // Set the case-(in)sensitive parameter
+ re.setCaseSensitive(s_bCaseSensitive);
+}
+
+/**
+ * Reads user values from the widgets, and closes the dialogue.
+ * This slot is connected to the clicked() signal emitted by the "OK" button.
+ */
+void SearchResultsDlg::accept()
+{
+ QString sText;
+
+ // Determine the selected type and store its value for the next invocation
+ if (m_pTextRadio->isChecked())
+ s_nType = PlainText;
+ else if (m_pRegExpRadio->isChecked())
+ s_nType = RegExp;
+ else if (m_pSimpRegExpRadio->isChecked())
+ s_nType = SimpRegExp;
+
+ // Determine search parameters
+ s_bCaseSensitive = m_pCaseSenCheck->isChecked();
+ s_bNegate = m_pNegateCheck->isChecked();
+
+ // Remove white space from the search text
+ sText = m_pSearchEdit->text();
+ sText.stripWhiteSpace();
+ if (sText.isEmpty()) {
+ QDialog::reject();
+ return;
+ }
+
+ // Close the dialogue
+ QDialog::accept();
+}
+
+#include "searchresultsdlg.moc"
+