diff options
Diffstat (limited to 'pokemodr/FileDialog.cpp')
-rw-r--r-- | pokemodr/FileDialog.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/pokemodr/FileDialog.cpp b/pokemodr/FileDialog.cpp new file mode 100644 index 00000000..09afd852 --- /dev/null +++ b/pokemodr/FileDialog.cpp @@ -0,0 +1,64 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: pokegen/FileDialog.cpp +// Purpose: Dialog to open files +// Author: Ben Boeckel +// Modified by: Ben Boeckel +// Created: Fri Feb 1 08:34:34 2008 +// Copyright: ©2007-2008 Ben Boeckel and Nerdy Productions +// Licence: +// 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 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program. If not, see <http://www.gnu.org/licenses/>. +///////////////////////////////////////////////////////////////////////////// + +#include <kdiroperator.h> +#include <kfilewidget.h> +#include <kimagefilepreview.h> + +#include <QDir> +#include <QImage> +#include <QStringList> + +#include "FileDialog.h" + +FileDialog::FileDialog(const QString& filter, const QSize& imgSize) : + QObject(NULL), + dlg(NULL) +{ + if (latestDir == "") + latestDir = KUrl(QString("%1/.kde/share/apps/pokegen/images").arg(QDir::homePath())); + size = imgSize; + dlg = new KFileDialog(latestDir, filter, NULL); + dlg->setOperationMode(KFileDialog::Opening); + if (size.isValid()) + { + dlg->setPreviewWidget(new KImageFilePreview()); + connect(static_cast<KFileWidget*>(dlg->fileWidget())->findChild<KDirOperator*>(), SIGNAL(dirActivated(const KFileItem&)), this, SLOT(sizeFilter(const FileItem&))); + } +} + +void FileDialog::sizeFilter(const KFileItem& item) +{ + QString filter; + QStringList files(QDir(item.url().path()).entryList(QStringList() << "*.png", QDir::Files)); + for (int i = 0; i < files.size(); ++i) + { + if (QImage(files.at(i)).size() == size) + { + if (filter.length()) + filter.append(" "); + filter.append(files.at(i)); + } + } + filter.append("|Valid PNG Files"); + dlg->setFilter(filter); +} |