• Skip to content
  • Skip to link menu
KDE 4.7 API Reference
  • KDE API Reference
  • kdelibs
  • KDE Home
  • Contact Us
 

KIO

kencodingfiledialog.cpp
Go to the documentation of this file.
00001 // -*- c++ -*-
00002 /* This file is part of the KDE libraries
00003     Copyright (C) 2003 Joseph Wenninger <jowenn@kde.org>
00004                   2003 Andras Mantia <amantia@freemail.hu>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
00020 */
00021 
00022 #include "kencodingfiledialog.h"
00023 
00024 #include <config-kfile.h>
00025 
00026 #include <kabstractfilewidget.h>
00027 #include <kcombobox.h>
00028 #include <kglobal.h>
00029 #include <klocale.h>
00030 #include <kcharsets.h>
00031 #include <QtCore/QTextCodec>
00032 #include <krecentdocument.h>
00033 
00034 struct KEncodingFileDialogPrivate
00035 {
00036     KComboBox *encoding;
00037 };
00038 
00039 KEncodingFileDialog::KEncodingFileDialog(const QString& startDir, const QString& encoding , const QString& filter,
00040                                          const QString& caption, KFileDialog::OperationMode type, QWidget *parent)
00041    : KFileDialog(startDir,filter,parent), d(new KEncodingFileDialogPrivate)
00042 {
00043   setCaption(caption);
00044   //ops->clearHistory();
00045 
00046   setOperationMode( type );
00047 
00048   d->encoding = new KComboBox(this);
00049   fileWidget()->setCustomWidget(i18n("Encoding:"), d->encoding);
00050 
00051   d->encoding->clear ();
00052   QString sEncoding = encoding;
00053   QString systemEncoding = QLatin1String(KGlobal::locale()->encoding());
00054   if (sEncoding.isEmpty() || sEncoding == "System")
00055      sEncoding = systemEncoding;
00056 
00057   const QStringList encodings (KGlobal::charsets()->availableEncodingNames());
00058   int insert = 0, system = 0;
00059   bool foundRequested=false;
00060   foreach (const QString& encoding, encodings)
00061   {
00062     bool found = false;
00063     QTextCodec *codecForEnc = KGlobal::charsets()->codecForName(encoding, found);
00064 
00065     if (found)
00066     {
00067       d->encoding->addItem (encoding);
00068       if ( (codecForEnc->name() == sEncoding) || (encoding == sEncoding) )
00069       {
00070         d->encoding->setCurrentIndex(insert);
00071         foundRequested=true;
00072       }
00073 
00074       if ( (codecForEnc->name() == systemEncoding) || (encoding == systemEncoding) )
00075         system=insert;
00076       insert++;
00077     }
00078   }
00079   
00080   if ( !foundRequested )
00081     d->encoding->setCurrentIndex(system); 
00082 
00083 }
00084 
00085 KEncodingFileDialog::~KEncodingFileDialog()
00086 {
00087     delete d;
00088 }
00089 
00090 
00091 QString KEncodingFileDialog::selectedEncoding() const
00092 {
00093   if (d->encoding)
00094      return d->encoding->currentText();
00095   else
00096     return QString();
00097 }
00098 
00099 
00100 KEncodingFileDialog::Result KEncodingFileDialog::getOpenFileNameAndEncoding(const QString& encoding,
00101                      const QString& startDir,
00102                                      const QString& filter,
00103                                      QWidget *parent, const QString& caption)
00104 {
00105     KEncodingFileDialog dlg(startDir, encoding, filter,
00106                             caption.isNull() ? i18n("Open") : caption,
00107                             Opening, parent);
00108 
00109     dlg.setMode( KFile::File | KFile::LocalOnly );
00110     dlg.exec();
00111 
00112     Result res;
00113     res.fileNames<<dlg.selectedFile();
00114     res.encoding=dlg.selectedEncoding();
00115     return res;
00116 }
00117 
00118 KEncodingFileDialog::Result KEncodingFileDialog::getOpenFileNamesAndEncoding(const QString& encoding,
00119                       const QString& startDir,
00120                                           const QString& filter,
00121                                           QWidget *parent,
00122                                           const QString& caption)
00123 {
00124     KEncodingFileDialog dlg(startDir, encoding, filter, caption.isNull() ? i18n("Open") : caption,
00125                             Opening, parent);
00126     dlg.setMode(KFile::Files | KFile::LocalOnly);
00127     dlg.exec();
00128 
00129     Result res;
00130     res.fileNames=dlg.selectedFiles();
00131     res.encoding=dlg.selectedEncoding();
00132     return res;
00133 }
00134 
00135 KEncodingFileDialog::Result KEncodingFileDialog::getOpenUrlAndEncoding(const QString& encoding, const QString& startDir,
00136                                                                        const QString& filter, QWidget *parent, const QString& caption)
00137 {
00138     KEncodingFileDialog dlg(startDir, encoding, filter,
00139                             caption.isNull() ? i18n("Open") : caption,
00140                             Opening, parent);
00141 
00142     dlg.setMode( KFile::File );
00143     dlg.exec();
00144 
00145     Result res;
00146     res.URLs<<dlg.selectedUrl();
00147     res.encoding=dlg.selectedEncoding();
00148     return res;
00149 }
00150 
00151 KEncodingFileDialog::Result KEncodingFileDialog::getOpenUrlsAndEncoding(const QString& encoding, const QString& startDir,
00152                                           const QString& filter,
00153                                           QWidget *parent,
00154                                           const QString& caption)
00155 {
00156     KEncodingFileDialog dlg(startDir, encoding, filter,
00157                             caption.isNull() ? i18n("Open") : caption,
00158                             Opening, parent);
00159 
00160     dlg.setMode(KFile::Files);
00161     dlg.exec();
00162 
00163     Result res;
00164     res.URLs=dlg.selectedUrls();
00165     res.encoding=dlg.selectedEncoding();
00166     return res;
00167 }
00168 
00169 
00170 KEncodingFileDialog::Result KEncodingFileDialog::getSaveFileNameAndEncoding(const QString& encoding,
00171                          const QString& dir,
00172                      const QString& filter,
00173                                      QWidget *parent,
00174                                      const QString& caption)
00175 {
00176     KEncodingFileDialog dlg(dir, encoding, filter,
00177                             caption.isNull() ? i18n("Save As") : caption,
00178                             Saving, parent);
00179     dlg.setMode(KFile::File);
00180     dlg.exec();
00181 
00182     QString filename = dlg.selectedFile();
00183     if (!filename.isEmpty())
00184         KRecentDocument::add(filename);
00185 
00186     Result res;
00187     res.fileNames<<filename;
00188     res.encoding=dlg.selectedEncoding();
00189     return res;
00190 }
00191 
00192 
00193 KEncodingFileDialog::Result  KEncodingFileDialog::getSaveUrlAndEncoding(const QString& encoding,
00194                  const QString& dir, const  QString& filter,
00195                              QWidget *parent, const QString& caption)
00196 {
00197     KEncodingFileDialog dlg(dir, encoding, filter,
00198                             caption.isNull() ? i18n("Save As") : caption,
00199                             Saving, parent);
00200     dlg.setMode(KFile::File);
00201 
00202     Result res;
00203     if (dlg.exec() == QDialog::Accepted) {
00204       KUrl url = dlg.selectedUrl();
00205       if (url.isValid())
00206           KRecentDocument::add( url );
00207       res.URLs<<url;
00208       res.encoding=dlg.selectedEncoding();
00209     }
00210     return res;
00211 }
00212 
00213 #include "kencodingfiledialog.moc"

KIO

Skip menu "KIO"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.7.5
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal