summaryrefslogtreecommitdiffstats
path: root/pokemodr/FileDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/FileDialog.cpp')
-rw-r--r--pokemodr/FileDialog.cpp64
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);
+}