kio Library API Documentation

kencodingfiledialog.cpp

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., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, USA. 00020 */ 00021 00022 #include "config-kfile.h" 00023 00024 #include "kencodingfiledialog.h" 00025 #include <kcombobox.h> 00026 #include <ktoolbar.h> 00027 #include <kglobal.h> 00028 #include <klocale.h> 00029 #include <kcharsets.h> 00030 #include <qtextcodec.h> 00031 #include <kdiroperator.h> 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, const char* name, bool modal) 00041 : KFileDialog(startDir,filter,parent,name,modal), d(new KEncodingFileDialogPrivate) 00042 { 00043 Q_UNUSED(type) 00044 setCaption(caption); 00045 00046 setOperationMode( type ); 00047 00048 KToolBar *tb = toolBar(); 00049 int index = tb->insertCombo(QStringList(), -1 /*id*/, false /*writable*/, 0 /*signal*/, 0 /*receiver*/, 0 /*slot*/ ); 00050 d->encoding = tb->getCombo( tb->idAt( index ) ); 00051 if ( !d->encoding ) 00052 return; 00053 00054 d->encoding->clear (); 00055 QString sEncoding = encoding; 00056 if (sEncoding.isEmpty()) 00057 sEncoding = QString::fromLatin1(KGlobal::locale()->encoding()); 00058 00059 QStringList encodings (KGlobal::charsets()->availableEncodingNames()); 00060 int insert = 0; 00061 for (uint i=0; i < encodings.count(); i++) 00062 { 00063 bool found = false; 00064 QTextCodec *codecForEnc = KGlobal::charsets()->codecForName(encodings[i], found); 00065 00066 if (found) 00067 { 00068 d->encoding->insertItem (encodings[i]); 00069 if ( (codecForEnc->name() == sEncoding) || (encodings[i] == sEncoding) ) 00070 { 00071 d->encoding->setCurrentItem(insert); 00072 } 00073 00074 insert++; 00075 } 00076 } 00077 00078 00079 } 00080 00081 KEncodingFileDialog::~KEncodingFileDialog() 00082 { 00083 delete d; 00084 } 00085 00086 00087 QString KEncodingFileDialog::selectedEncoding() const 00088 { 00089 if (d->encoding) 00090 return d->encoding->currentText(); 00091 else 00092 return QString::null; 00093 } 00094 00095 00096 KEncodingFileDialog::Result KEncodingFileDialog::getOpenFileNameAndEncoding(const QString& encoding, 00097 const QString& startDir, 00098 const QString& filter, 00099 QWidget *parent, const QString& caption) 00100 { 00101 KEncodingFileDialog dlg(startDir, encoding,filter,caption.isNull() ? i18n("Open") : caption,Opening,parent, 00102 "filedialog", true); 00103 00104 dlg.setMode( KFile::File | KFile::LocalOnly ); 00105 dlg.ops->clearHistory(); 00106 dlg.exec(); 00107 00108 Result res; 00109 res.fileNames<<dlg.selectedFile(); 00110 res.encoding=dlg.selectedEncoding(); 00111 return res; 00112 } 00113 00114 KEncodingFileDialog::Result KEncodingFileDialog::getOpenFileNamesAndEncoding(const QString& encoding, 00115 const QString& startDir, 00116 const QString& filter, 00117 QWidget *parent, 00118 const QString& caption) 00119 { 00120 KEncodingFileDialog dlg(startDir, encoding,filter,caption.isNull() ? i18n("Open") : caption,Opening,parent, 00121 "filedialog", true); 00122 dlg.setMode(KFile::Files | KFile::LocalOnly); 00123 dlg.ops->clearHistory(); 00124 dlg.exec(); 00125 00126 Result res; 00127 res.fileNames=dlg.selectedFiles(); 00128 res.encoding=dlg.selectedEncoding(); 00129 return res; 00130 } 00131 00132 KEncodingFileDialog::Result KEncodingFileDialog::getOpenURLAndEncoding(const QString& encoding, const QString& startDir, 00133 const QString& filter, QWidget *parent, const QString& caption) 00134 { 00135 KEncodingFileDialog dlg(startDir, encoding,filter,caption.isNull() ? i18n("Open") : caption,Opening,parent, 00136 "filedialog", true); 00137 00138 dlg.setMode( KFile::File ); 00139 dlg.ops->clearHistory(); 00140 dlg.exec(); 00141 00142 Result res; 00143 res.URLs<<dlg.selectedURL(); 00144 res.encoding=dlg.selectedEncoding(); 00145 return res; 00146 } 00147 00148 KEncodingFileDialog::Result KEncodingFileDialog::getOpenURLsAndEncoding(const QString& encoding, const QString& startDir, 00149 const QString& filter, 00150 QWidget *parent, 00151 const QString& caption) 00152 { 00153 KEncodingFileDialog dlg(startDir, encoding,filter,caption.isNull() ? i18n("Open") : caption,Opening,parent, 00154 "filedialog", true); 00155 00156 dlg.setMode(KFile::Files); 00157 dlg.ops->clearHistory(); 00158 dlg.exec(); 00159 00160 Result res; 00161 res.URLs=dlg.selectedURLs(); 00162 res.encoding=dlg.selectedEncoding(); 00163 return res; 00164 } 00165 00166 00167 KEncodingFileDialog::Result KEncodingFileDialog::getSaveFileNameAndEncoding(const QString& encoding, 00168 const QString& dir, 00169 const QString& filter, 00170 QWidget *parent, 00171 const QString& caption) 00172 { 00173 bool specialDir = dir.at(0) == ':'; 00174 KEncodingFileDialog dlg(specialDir?dir:QString::null, encoding,filter,caption.isNull() ? i18n("Save As") : caption, 00175 Saving,parent, "filedialog", true); 00176 00177 if ( !specialDir ) 00178 dlg.setSelection( dir ); // may also be a filename 00179 dlg.exec(); 00180 00181 QString filename = dlg.selectedFile(); 00182 if (!filename.isEmpty()) 00183 KRecentDocument::add(filename); 00184 00185 Result res; 00186 res.fileNames<<filename; 00187 res.encoding=dlg.selectedEncoding(); 00188 return res; 00189 } 00190 00191 00192 KEncodingFileDialog::Result KEncodingFileDialog::getSaveURLAndEncoding(const QString& encoding, 00193 const QString& dir, const QString& filter, 00194 QWidget *parent, const QString& caption) 00195 { 00196 bool specialDir = dir.at(0) == ':'; 00197 KEncodingFileDialog dlg(specialDir?dir:QString::null, encoding,filter,caption.isNull() ? i18n("Save As") : 00198 caption, Saving,parent, "filedialog", true); 00199 00200 if ( !specialDir ) 00201 dlg.setSelection( dir ); // may also be a filename 00202 00203 dlg.exec(); 00204 00205 KURL url = dlg.selectedURL(); 00206 if (url.isValid()) 00207 KRecentDocument::add( url ); 00208 00209 Result res; 00210 res.URLs<<url; 00211 res.encoding=dlg.selectedEncoding(); 00212 return res; 00213 } 00214 00215 00216 00217 void KEncodingFileDialog::virtual_hook( int id, void* data ) 00218 { 00219 KFileDialog::virtual_hook( id, data ); 00220 } 00221 00222 00223 #include "kencodingfiledialog.moc"
KDE Logo
This file is part of the documentation for kio Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 16 17:22:29 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003