///////////////////////////////////////////////////////////////////////////// // 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 . ///////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include "FileDialog.h" KUrl FileDialog::latestDir = KUrl(); 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(dlg->fileWidget())->findChild(), 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); }