// -*- c++ -*- /* This file is part of the KDE libraries Copyright (C) 2003 Joseph Wenninger 2003 Andras Mantia This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kencodingfiledialog.h" #include #include #include #include #include #include #include #include struct KEncodingFileDialogPrivate { KComboBox *encoding; }; KEncodingFileDialog::KEncodingFileDialog(const QString& startDir, const QString& encoding , const QString& filter, const QString& caption, KFileDialog::OperationMode type, QWidget *parent) : KFileDialog(startDir,filter,parent), d(new KEncodingFileDialogPrivate) { setCaption(caption); //ops->clearHistory(); setOperationMode( type ); d->encoding = new KComboBox(this); fileWidget()->setCustomWidget(i18n("Encoding:"), d->encoding); d->encoding->clear (); QString sEncoding = encoding; QByteArray systemEncoding = QTextCodec::codecForLocale()->name(); if (sEncoding.isEmpty() || sEncoding == QLatin1String("System")) sEncoding = systemEncoding; const QStringList encodings (KGlobal::charsets()->availableEncodingNames()); int insert = 0, system = 0; bool foundRequested=false; foreach (const QString& encoding, encodings) { bool found = false; QTextCodec *codecForEnc = KGlobal::charsets()->codecForName(encoding, found); if (found) { d->encoding->addItem (encoding); if ( (codecForEnc->name() == sEncoding) || (encoding == sEncoding) ) { d->encoding->setCurrentIndex(insert); foundRequested=true; } if ( (codecForEnc->name() == systemEncoding) || (encoding == systemEncoding) ) system=insert; insert++; } } if ( !foundRequested ) d->encoding->setCurrentIndex(system); } KEncodingFileDialog::~KEncodingFileDialog() { delete d; } QString KEncodingFileDialog::selectedEncoding() const { if (d->encoding) return d->encoding->currentText(); else return QString(); } KEncodingFileDialog::Result KEncodingFileDialog::getOpenFileNameAndEncoding(const QString& encoding, const QString& startDir, const QString& filter, QWidget *parent, const QString& caption) { KEncodingFileDialog dlg(startDir, encoding, filter, caption.isNull() ? i18n("Open") : caption, Opening, parent); dlg.setMode( KFile::File | KFile::LocalOnly ); dlg.exec(); Result res; res.fileNames<