diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/picsearchoptions.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/picsearchoptions.cpp')
| -rw-r--r-- | scribus/picsearchoptions.cpp | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/scribus/picsearchoptions.cpp b/scribus/picsearchoptions.cpp new file mode 100644 index 0000000..d2e2275 --- /dev/null +++ b/scribus/picsearchoptions.cpp @@ -0,0 +1,162 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +/*************************************************************************** + picsearchoptions.cpp - description + ------------------- + begin : Mon Feb 26 2007 + copyright : (C) 2007 by Franz Schmid + email : Franz.Schmid@altmuehlnet.de + ***************************************************************************/ + +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ + +#include <cassert> + +#include <QCheckBox> +#include <QDir> +#include <QFileDialog> +#include <QLabel> +#include <QLineEdit> +#include <QMessageBox> +#include <QPushButton> +#include <QStringList> +#include <QToolTip> + +#include "picsearchoptions.h" +#include "filesearch.h" + +PicSearchOptions::PicSearchOptions(QWidget* parent, const QString & fileName, const QString & searchBase) : QDialog( parent ) +{ + setupUi(this); + setModal(true); + m_bCancelled = false; + m_strFileName = fileName; + m_strLastDirSearched = searchBase; + + fileEdit->setText(m_strFileName); + directoryEdit->setText(m_strLastDirSearched); + progressBar1->hide(); + searchLabel->hide(); + connect(startButton, SIGNAL(clicked()), this, SLOT(slotSearchPic())); + connect(changeDirButton, SIGNAL(clicked()), this, SLOT(slotChangeSearchDir())); + + caseInsensitiveCheck->setToolTip("<qt>" + tr("The filesystem will be searched for case insensitive file names when you check this on. Remember it is not default on most operating systems except MS Windows") + "</qt>"); + } + +void PicSearchOptions::setSearchButton(bool toCancel, const FileSearch* searcher) +{ + if (toCancel) + { + startButton->setText(tr("Cancel Search")); + progressBar1->reset(); + progressBar1->show(); + searchLabel->show(); + disconnect(startButton, SIGNAL(clicked()), this, SLOT(slotSearchPic())); + connect(startButton, SIGNAL(clicked()), searcher, SLOT(cancel())); + } + else + { + startButton->setText( tr("Start Search")); + progressBar1->reset(); + progressBar1->hide(); + searchLabel->hide(); + disconnect(startButton, SIGNAL(clicked()), searcher, SLOT(cancel())); + connect(startButton, SIGNAL(clicked()), this, SLOT(slotSearchPic())); + } +} + +void PicSearchOptions::slotChangeSearchDir() +{ + QString workDir = directoryEdit->text(); +#ifndef _WIN32 + if (workDir.isEmpty() || !QDir().exists(workDir)) + { + workDir = m_strLastDirSearched; + if (workDir.isEmpty() || !QDir().exists(workDir)) + { + workDir = QDir::homePath(); + } + } +#else + // TODO: and on _WIN32 workDir is ... ? +#endif + QString searchBase = QFileDialog::getExistingDirectory(this, tr("Select a base directory for search"), workDir); + if (searchBase.isEmpty() || !QDir().exists(searchBase)) + return; + m_strLastDirSearched = searchBase; + directoryEdit->setText(m_strLastDirSearched); +} + +void PicSearchOptions::slotSearchPic() +{ + QString searchBase = directoryEdit->text(); + if (searchBase.isEmpty() || !QDir().exists(searchBase)) + { + if (QMessageBox::warning(this, tr("Scribus - Image Search"), tr("Base directory for search does not exist.\nPlease choose another one."), + QMessageBox::Ok | QMessageBox::Default | QMessageBox::Escape | QMessageBox::Cancel, + QMessageBox::NoButton) != QMessageBox::Ok) + return; + + slotChangeSearchDir(); + searchBase = directoryEdit->text(); + if (searchBase.isEmpty() || !QDir().exists(searchBase)) + return; + } + m_strLastDirSearched = searchBase; + // Set up the search, then return to the event loop until it notifies us + // that it's done. + // Note: search will be deleted when this PicStatus is, so there's no + // need to worry about cleanup. + // case sensitive note: it has no meaning on windows + int recurse = (recursiveSearch->isChecked()) ? -1 : 0; + FileSearch* search = new FileSearch(this, fileEdit->text(), m_strLastDirSearched, recurse, caseInsensitiveCheck->isChecked()); + Q_CHECK_PTR(search); + connect(search, SIGNAL(searchComplete(const QStringList&, const QString&)), SLOT(slotSearchPicFinished(const QStringList&, const QString&))); + connect(search, SIGNAL(aborted(bool)), SLOT(slotSearchPicAborted(bool))); + // Set up the UI to let the user cancel the search, then start it + setSearchButton(true, search); + progressBar1->setRange(0, 0); + enableGuiWhileSearching(false); + search->start(); +} + +void PicSearchOptions::slotSearchPicAborted(bool userCancelled) +{ + m_bCancelled = userCancelled; + const FileSearch* search = dynamic_cast<const FileSearch*>(sender()); + assert(search); + setSearchButton(false, search); + enableGuiWhileSearching(true); + if (!userCancelled) + // A running search failed + QMessageBox::warning(this, tr("Scribus - Image Search"), tr("The search failed: %1").arg(search->lastError()), + QMessageBox::Ok|QMessageBox::Default|QMessageBox::Escape, + QMessageBox::NoButton); + reject(); +} + +void PicSearchOptions::slotSearchPicFinished(const QStringList & matches, const QString & fileName) +{ + enableGuiWhileSearching(true); + m_listMatches = matches; + m_strFileName = fileEdit->text(); + accept(); +} + +void PicSearchOptions::enableGuiWhileSearching(bool enable) +{ + fileEdit->setEnabled(enable); + directoryEdit->setEnabled(enable); + changeDirButton->setEnabled(enable); + caseInsensitiveCheck->setEnabled(enable); + recursiveSearch->setEnabled(enable); +} |
