Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 1f9eb832ba1e4b88d9a5c2b384813bb4 > files > 5029

kdelibs3-apidocs-3.5.10-31.fc15.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">

<head>
  <title>kio/kfile: kfiledialog.cpp Source File (kio/kfile)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../../.."><img id="nav_header_logo" alt="Home" align="left" src="../../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>

  <div id="nav_header_title" align="left">KDE API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_right" style="text-align: left;">
/ <a href="../../..">API Reference</a>
 / <a href="../../html/index.html">kio</a> / <a href=".">kfile</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <a name="content"></a>


<!-- Generated by Doxygen 1.7.4 -->
<div class="header">
  <div class="headertitle">
<div class="title">kfiledialog.cpp</div>  </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">/* This file is part of the KDE libraries</span>
<a name="l00003"></a>00003 <span class="comment">    Copyright (C) 1997, 1998 Richard Moore &lt;rich@kde.org&gt;</span>
<a name="l00004"></a>00004 <span class="comment">                  1998 Stephan Kulow &lt;coolo@kde.org&gt;</span>
<a name="l00005"></a>00005 <span class="comment">                  1998 Daniel Grana &lt;grana@ie.iwi.unibe.ch&gt;</span>
<a name="l00006"></a>00006 <span class="comment">                  1999,2000,2001,2002,2003 Carsten Pfeiffer &lt;pfeiffer@kde.org&gt;</span>
<a name="l00007"></a>00007 <span class="comment">                  2003 Clarence Dang &lt;dang@kde.org&gt;</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment">    This library is free software; you can redistribute it and/or</span>
<a name="l00010"></a>00010 <span class="comment">    modify it under the terms of the GNU Library General Public</span>
<a name="l00011"></a>00011 <span class="comment">    License as published by the Free Software Foundation; either</span>
<a name="l00012"></a>00012 <span class="comment">    version 2 of the License, or (at your option) any later version.</span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="comment">    This library is distributed in the hope that it will be useful,</span>
<a name="l00015"></a>00015 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00016"></a>00016 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00017"></a>00017 <span class="comment">    Library General Public License for more details.</span>
<a name="l00018"></a>00018 <span class="comment"></span>
<a name="l00019"></a>00019 <span class="comment">    You should have received a copy of the GNU Library General Public License</span>
<a name="l00020"></a>00020 <span class="comment">    along with this library; see the file COPYING.LIB.  If not, write to</span>
<a name="l00021"></a>00021 <span class="comment">    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,</span>
<a name="l00022"></a>00022 <span class="comment">    Boston, MA 02110-1301, USA.</span>
<a name="l00023"></a>00023 <span class="comment">*/</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;kfiledialog.h&quot;</span>
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;qptrcollection.h&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;qcheckbox.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;qcombobox.h&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;qlayout.h&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;qlineedit.h&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;qptrlist.h&gt;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;qpixmap.h&gt;</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;qtextcodec.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;qtooltip.h&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;qtimer.h&gt;</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;qwhatsthis.h&gt;</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;qfiledialog.h&gt;</span>
<a name="l00044"></a>00044 
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;kaccel.h&gt;</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;kaction.h&gt;</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;kapplication.h&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include &lt;kcharsets.h&gt;</span>
<a name="l00049"></a>00049 <span class="preprocessor">#include &lt;kcmdlineargs.h&gt;</span>
<a name="l00050"></a>00050 <span class="preprocessor">#include &lt;kcompletionbox.h&gt;</span>
<a name="l00051"></a>00051 <span class="preprocessor">#include &lt;kconfig.h&gt;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &lt;kglobal.h&gt;</span>
<a name="l00054"></a>00054 <span class="preprocessor">#include &lt;kglobalsettings.h&gt;</span>
<a name="l00055"></a>00055 <span class="preprocessor">#include &lt;kiconloader.h&gt;</span>
<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;kimageio.h&gt;</span>
<a name="l00057"></a>00057 <span class="preprocessor">#include &lt;kio/job.h&gt;</span>
<a name="l00058"></a>00058 <span class="preprocessor">#include &lt;kio/netaccess.h&gt;</span>
<a name="l00059"></a>00059 <span class="preprocessor">#include &lt;kio/scheduler.h&gt;</span>
<a name="l00060"></a>00060 <span class="preprocessor">#include &lt;kio/kservicetypefactory.h&gt;</span>
<a name="l00061"></a>00061 <span class="preprocessor">#include &lt;klocale.h&gt;</span>
<a name="l00062"></a>00062 <span class="preprocessor">#include &lt;kmessagebox.h&gt;</span>
<a name="l00063"></a>00063 <span class="preprocessor">#include &lt;kmimetype.h&gt;</span>
<a name="l00064"></a>00064 <span class="preprocessor">#include &lt;kpopupmenu.h&gt;</span>
<a name="l00065"></a>00065 <span class="preprocessor">#include &lt;kprotocolinfo.h&gt;</span>
<a name="l00066"></a>00066 <span class="preprocessor">#include &lt;kpushbutton.h&gt;</span>
<a name="l00067"></a>00067 <span class="preprocessor">#include &lt;krecentdirs.h&gt;</span>
<a name="l00068"></a>00068 <span class="preprocessor">#include &lt;kshell.h&gt;</span>
<a name="l00069"></a>00069 <span class="preprocessor">#include &lt;kstandarddirs.h&gt;</span>
<a name="l00070"></a>00070 <span class="preprocessor">#include &lt;kstdguiitem.h&gt;</span>
<a name="l00071"></a>00071 <span class="preprocessor">#include &lt;kstaticdeleter.h&gt;</span>
<a name="l00072"></a>00072 <span class="preprocessor">#include &lt;ktoolbar.h&gt;</span>
<a name="l00073"></a>00073 <span class="preprocessor">#include &lt;ktoolbarbutton.h&gt;</span>
<a name="l00074"></a>00074 <span class="preprocessor">#include &lt;kurl.h&gt;</span>
<a name="l00075"></a>00075 <span class="preprocessor">#include &lt;kurlcombobox.h&gt;</span>
<a name="l00076"></a>00076 <span class="preprocessor">#include &lt;kurlcompletion.h&gt;</span>
<a name="l00077"></a>00077 <span class="preprocessor">#include &lt;kuser.h&gt;</span>
<a name="l00078"></a>00078 
<a name="l00079"></a>00079 <span class="preprocessor">#include &quot;config-kfile.h&quot;</span>
<a name="l00080"></a>00080 <span class="preprocessor">#include &quot;kpreviewwidgetbase.h&quot;</span>
<a name="l00081"></a>00081 
<a name="l00082"></a>00082 <span class="preprocessor">#include &lt;kdirselectdialog.h&gt;</span>
<a name="l00083"></a>00083 <span class="preprocessor">#include &lt;kfileview.h&gt;</span>
<a name="l00084"></a>00084 <span class="preprocessor">#include &lt;krecentdocument.h&gt;</span>
<a name="l00085"></a>00085 <span class="preprocessor">#include &lt;kfilefiltercombo.h&gt;</span>
<a name="l00086"></a>00086 <span class="preprocessor">#include &lt;kdiroperator.h&gt;</span>
<a name="l00087"></a>00087 <span class="preprocessor">#include &lt;kimagefilepreview.h&gt;</span>
<a name="l00088"></a>00088 
<a name="l00089"></a>00089 <span class="preprocessor">#include &lt;kfilespeedbar.h&gt;</span>
<a name="l00090"></a>00090 <span class="preprocessor">#include &lt;kfilebookmarkhandler.h&gt;</span>
<a name="l00091"></a>00091 
<a name="l00092"></a>00092 <span class="preprocessor">#ifdef Q_WS_X11</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/Xlib.h&gt;</span>
<a name="l00094"></a>00094 <span class="preprocessor">#include &lt;fixx11h.h&gt;</span>
<a name="l00095"></a>00095 <span class="preprocessor">#endif</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span>
<a name="l00097"></a>00097 <span class="keyword">enum</span> Buttons { HOTLIST_BUTTON,
<a name="l00098"></a>00098                PATH_COMBO, CONFIGURE_BUTTON };
<a name="l00099"></a>00099 
<a name="l00100"></a>00100 <span class="keyword">template</span> <span class="keyword">class </span><a class="codeRef" href="qptrlist.html">QPtrList&lt;KIO::StatJob&gt;</a>;
<a name="l00101"></a>00101 
<a name="l00102"></a>00102 <span class="keyword">namespace </span>{
<a name="l00103"></a>00103     <span class="keyword">static</span> <span class="keywordtype">void</span> silenceQToolBar(QtMsgType, <span class="keyword">const</span> <span class="keywordtype">char</span> *)
<a name="l00104"></a>00104     {
<a name="l00105"></a>00105     }
<a name="l00106"></a>00106 }
<a name="l00107"></a>00107 
<a name="l00108"></a>00108 <span class="keyword">struct </span>KFileDialogPrivate
<a name="l00109"></a>00109 {
<a name="l00110"></a>00110     <span class="comment">// the last selected url</span>
<a name="l00111"></a>00111     KURL url;
<a name="l00112"></a>00112 
<a name="l00113"></a>00113     <span class="comment">// the selected filenames in multiselection mode -- FIXME</span>
<a name="l00114"></a>00114     <a class="codeRef" href="qstring.html">QString</a> filenames;
<a name="l00115"></a>00115 
<a name="l00116"></a>00116     <span class="comment">// the name of the filename set by setSelection</span>
<a name="l00117"></a>00117     <a class="codeRef" href="qstring.html">QString</a> selection;
<a name="l00118"></a>00118 
<a name="l00119"></a>00119     <span class="comment">// now following all kind of widgets, that I need to rebuild</span>
<a name="l00120"></a>00120     <span class="comment">// the geometry management</span>
<a name="l00121"></a>00121     <a class="codeRef" href="qboxlayout.html">QBoxLayout</a> *boxLayout;
<a name="l00122"></a>00122     <a class="codeRef" href="qwidget.html">QWidget</a> *mainWidget;
<a name="l00123"></a>00123 
<a name="l00124"></a>00124     <a class="codeRef" href="qlabel.html">QLabel</a> *locationLabel;
<a name="l00125"></a>00125 
<a name="l00126"></a>00126     <span class="comment">// @deprecated remove in KDE4</span>
<a name="l00127"></a>00127     <a class="codeRef" href="qlabel.html">QLabel</a> *filterLabel;
<a name="l00128"></a>00128     <a class="code" href="classKURLComboBox.html" title="This combobox shows a number of recent URLs/directories, as well as some default directories.">KURLComboBox</a> *pathCombo;
<a name="l00129"></a>00129     KPushButton *okButton, *cancelButton;
<a name="l00130"></a>00130     KFileSpeedBar *urlBar;
<a name="l00131"></a>00131     <a class="codeRef" href="qhboxlayout.html">QHBoxLayout</a> *urlBarLayout;
<a name="l00132"></a>00132     <a class="codeRef" href="qwidget.html">QWidget</a> *customWidget;
<a name="l00133"></a>00133 
<a name="l00134"></a>00134     <span class="comment">// Automatically Select Extension stuff</span>
<a name="l00135"></a>00135     <a class="codeRef" href="qcheckbox.html">QCheckBox</a> *autoSelectExtCheckBox;
<a name="l00136"></a>00136     <span class="keywordtype">bool</span> autoSelectExtChecked; <span class="comment">// whether or not the _user_ has checked the above box</span>
<a name="l00137"></a>00137     <a class="codeRef" href="qstring.html">QString</a> extension; <span class="comment">// current extension for this filter</span>
<a name="l00138"></a>00138 
<a name="l00139"></a>00139     <a class="codeRef" href="qptrlist.html">QPtrList&lt;KIO::StatJob&gt;</a> statJobs;
<a name="l00140"></a>00140 
<a name="l00141"></a>00141     KURL::List urlList; <span class="comment">//the list of selected urls</span>
<a name="l00142"></a>00142 
<a name="l00143"></a>00143     <a class="codeRef" href="qstringlist.html">QStringList</a> mimetypes; <span class="comment">//the list of possible mimetypes to save as</span>
<a name="l00144"></a>00144 
<a name="l00145"></a>00145     <span class="comment">// indicates if the location edit should be kept or cleared when changing</span>
<a name="l00146"></a>00146     <span class="comment">// directories</span>
<a name="l00147"></a>00147     <span class="keywordtype">bool</span> keepLocation :1;
<a name="l00148"></a>00148 
<a name="l00149"></a>00149     <span class="comment">// the KDirOperators view is set in KFileDialog::show(), so to avoid</span>
<a name="l00150"></a>00150     <span class="comment">// setting it again and again, we have this nice little boolean :)</span>
<a name="l00151"></a>00151     <span class="keywordtype">bool</span> hasView :1;
<a name="l00152"></a>00152 
<a name="l00153"></a>00153     <span class="keywordtype">bool</span> hasDefaultFilter :1; <span class="comment">// necessary for the operationMode</span>
<a name="l00154"></a>00154     <a class="code" href="classKFileDialog.html#a92793cc7dbd998ec502567ab056b7098" title="Defines some default behavior of the filedialog.">KFileDialog::OperationMode</a> operationMode;
<a name="l00155"></a>00155 
<a name="l00156"></a>00156     <span class="comment">// The file class used for KRecentDirs</span>
<a name="l00157"></a>00157     <a class="codeRef" href="qstring.html">QString</a> fileClass;
<a name="l00158"></a>00158 
<a name="l00159"></a>00159     KFileBookmarkHandler *bookmarkHandler;
<a name="l00160"></a>00160 
<a name="l00161"></a>00161     <span class="comment">// the ID of the path drop down so subclasses can place their custom widgets properly</span>
<a name="l00162"></a>00162     <span class="keywordtype">int</span> m_pathComboIndex;
<a name="l00163"></a>00163 };
<a name="l00164"></a>00164 
<a name="l00165"></a>00165 KURL *KFileDialog::lastDirectory; <span class="comment">// to set the start path</span>
<a name="l00166"></a>00166 
<a name="l00167"></a>00167 <span class="keyword">static</span> KStaticDeleter&lt;KURL&gt; ldd;
<a name="l00168"></a>00168 
<a name="l00169"></a><a class="code" href="classKFileDialog.html#a6d8a6172c023559781c90918bb581a20">00169</a> <a class="code" href="classKFileDialog.html#a6d8a6172c023559781c90918bb581a20" title="Constructs a file dialog.">KFileDialog::KFileDialog</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l00170"></a>00170                          <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">bool</span> modal)
<a name="l00171"></a>00171     : KDialogBase( parent, name, modal, <a class="codeRef" href="qstring.html">QString</a>::null, 0 )
<a name="l00172"></a>00172 {
<a name="l00173"></a>00173     <a class="code" href="classKFileDialog.html#a74beed198a9f3cbb5126b73d00c44a50" title="Perform basic initialization tasks.">init</a>( startDir, filter, 0 );
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175 
<a name="l00176"></a><a class="code" href="classKFileDialog.html#aedd1db993b4061d71342909623abbc4f">00176</a> <a class="code" href="classKFileDialog.html#a6d8a6172c023559781c90918bb581a20" title="Constructs a file dialog.">KFileDialog::KFileDialog</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l00177"></a>00177                          <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">bool</span> modal, <a class="codeRef" href="qwidget.html">QWidget</a>* widget)
<a name="l00178"></a>00178     : KDialogBase( parent, name, modal, <a class="codeRef" href="qstring.html">QString</a>::null, 0 )
<a name="l00179"></a>00179 {
<a name="l00180"></a>00180     <a class="code" href="classKFileDialog.html#a74beed198a9f3cbb5126b73d00c44a50" title="Perform basic initialization tasks.">init</a>( startDir, filter, widget );
<a name="l00181"></a>00181 }
<a name="l00182"></a>00182 
<a name="l00183"></a>00183 
<a name="l00184"></a><a class="code" href="classKFileDialog.html#a535daa2a37515297f19c9edd55040954">00184</a> <a class="code" href="classKFileDialog.html#a535daa2a37515297f19c9edd55040954" title="Destructs the file dialog.">KFileDialog::~KFileDialog</a>()
<a name="l00185"></a>00185 {
<a name="l00186"></a>00186     hide();
<a name="l00187"></a>00187 
<a name="l00188"></a>00188     KConfig *config = KGlobal::config();
<a name="l00189"></a>00189 
<a name="l00190"></a>00190     <span class="keywordflow">if</span> (d-&gt;urlBar)
<a name="l00191"></a>00191         d-&gt;urlBar-&gt;save( config );
<a name="l00192"></a>00192 
<a name="l00193"></a>00193     config-&gt;sync();
<a name="l00194"></a>00194 
<a name="l00195"></a>00195     <span class="keyword">delete</span> d-&gt;bookmarkHandler; <span class="comment">// Should be deleted before ops!</span>
<a name="l00196"></a>00196     <span class="keyword">delete</span> ops;
<a name="l00197"></a>00197     <span class="keyword">delete</span> d;
<a name="l00198"></a>00198 }
<a name="l00199"></a>00199 
<a name="l00200"></a><a class="code" href="classKFileDialog.html#a0903c448632e67a099f50ebf947c1f19">00200</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a0903c448632e67a099f50ebf947c1f19" title="Sets the text to be displayed in front of the selection.">KFileDialog::setLocationLabel</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; text)
<a name="l00201"></a>00201 {
<a name="l00202"></a>00202     d-&gt;locationLabel-&gt;setText(text);
<a name="l00203"></a>00203 }
<a name="l00204"></a>00204 
<a name="l00205"></a><a class="code" href="classKFileDialog.html#a715e45099822135eeab4fd3ba828bc4a">00205</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a715e45099822135eeab4fd3ba828bc4a" title="Sets the filter to be used to filter.">KFileDialog::setFilter</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter)
<a name="l00206"></a>00206 {
<a name="l00207"></a>00207     <span class="keywordtype">int</span> pos = filter.<a class="codeRef" href="qstring.html#find">find</a>(<span class="charliteral">&#39;/&#39;</span>);
<a name="l00208"></a>00208 
<a name="l00209"></a>00209     <span class="comment">// Check for an un-escaped &#39;/&#39;, if found</span>
<a name="l00210"></a>00210     <span class="comment">// interpret as a MIME filter.</span>
<a name="l00211"></a>00211 
<a name="l00212"></a>00212     <span class="keywordflow">if</span> (pos &gt; 0 &amp;&amp; filter[pos - 1] != <span class="charliteral">&#39;\\&#39;</span>) {
<a name="l00213"></a>00213         <a class="codeRef" href="qstringlist.html">QStringList</a> filters = <a class="codeRef" href="qstringlist.html#split">QStringList::split</a>( <span class="stringliteral">&quot; &quot;</span>, filter );
<a name="l00214"></a>00214         <a class="code" href="classKFileDialog.html#a37831541b60cf983c0ce41fc4aeb1183" title="Sets the filter up to specify the output type.">setMimeFilter</a>( filters );
<a name="l00215"></a>00215         <span class="keywordflow">return</span>;
<a name="l00216"></a>00216     }
<a name="l00217"></a>00217 
<a name="l00218"></a>00218     <span class="comment">// Strip the escape characters from</span>
<a name="l00219"></a>00219     <span class="comment">// escaped &#39;/&#39; characters.</span>
<a name="l00220"></a>00220 
<a name="l00221"></a>00221     <a class="codeRef" href="qstring.html">QString</a> copy (filter);
<a name="l00222"></a>00222     <span class="keywordflow">for</span> (pos = 0; (pos = copy.<a class="codeRef" href="qstring.html#find">find</a>(<span class="stringliteral">&quot;\\/&quot;</span>, pos)) != -1; ++pos)
<a name="l00223"></a>00223         copy.<a class="codeRef" href="qstring.html#remove">remove</a>(pos, 1);
<a name="l00224"></a>00224 
<a name="l00225"></a>00225     ops-&gt;<a class="code" href="classKDirOperator.html#a8e0d890a72acd97a0a1b793a7a51a1c5" title="Clears both the namefilter and mimetype filter, so that all files and directories will be shown...">clearFilter</a>();
<a name="l00226"></a>00226     filterWidget-&gt;setFilter(copy);
<a name="l00227"></a>00227     ops-&gt;<a class="code" href="classKDirOperator.html#a61b7db5e6ee2fe47b87d7973a854e02e" title="Sets a filter like &quot;*.cpp *.h *.o&quot;.">setNameFilter</a>(filterWidget-&gt;currentFilter());
<a name="l00228"></a>00228     d-&gt;hasDefaultFilter = <span class="keyword">false</span>;
<a name="l00229"></a>00229     filterWidget-&gt;setEditable( <span class="keyword">true</span> );
<a name="l00230"></a>00230 
<a name="l00231"></a>00231     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l00232"></a>00232 }
<a name="l00233"></a>00233 
<a name="l00234"></a><a class="code" href="classKFileDialog.html#a4ccfa2e42e5853db00a0d1369b00bd1d">00234</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a4ccfa2e42e5853db00a0d1369b00bd1d" title="Returns the current filter as entered by the user or one of the predefined set via setFilter()...">KFileDialog::currentFilter</a>()<span class="keyword"> const</span>
<a name="l00235"></a>00235 <span class="keyword"></span>{
<a name="l00236"></a>00236     <span class="keywordflow">return</span> filterWidget-&gt;currentFilter();
<a name="l00237"></a>00237 }
<a name="l00238"></a>00238 
<a name="l00239"></a>00239 <span class="comment">// deprecated</span>
<a name="l00240"></a><a class="code" href="classKFileDialog.html#ae67d592fab68f0133d0479eca516e935">00240</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ae67d592fab68f0133d0479eca516e935" title="Sets the filter up to specify the output type.">KFileDialog::setFilterMimeType</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;label,
<a name="l00241"></a>00241                                     <span class="keyword">const</span> KMimeType::List &amp;types,
<a name="l00242"></a>00242                                     <span class="keyword">const</span> KMimeType::Ptr &amp;defaultType)
<a name="l00243"></a>00243 {
<a name="l00244"></a>00244     d-&gt;mimetypes.clear();
<a name="l00245"></a>00245     d-&gt;filterLabel-&gt;setText(label);
<a name="l00246"></a>00246 
<a name="l00247"></a>00247     KMimeType::List::ConstIterator it;
<a name="l00248"></a>00248     <span class="keywordflow">for</span>( it = types.begin(); it != types.end(); ++it)
<a name="l00249"></a>00249         d-&gt;mimetypes.append( (*it)-&gt;name() );
<a name="l00250"></a>00250 
<a name="l00251"></a>00251     <a class="code" href="classKFileDialog.html#a37831541b60cf983c0ce41fc4aeb1183" title="Sets the filter up to specify the output type.">setMimeFilter</a>( d-&gt;mimetypes, defaultType-&gt;name() );
<a name="l00252"></a>00252 }
<a name="l00253"></a>00253 
<a name="l00254"></a><a class="code" href="classKFileDialog.html#a37831541b60cf983c0ce41fc4aeb1183">00254</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a37831541b60cf983c0ce41fc4aeb1183" title="Sets the filter up to specify the output type.">KFileDialog::setMimeFilter</a>( <span class="keyword">const</span> <a class="codeRef" href="qstringlist.html">QStringList</a>&amp; mimeTypes,
<a name="l00255"></a>00255                                  <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; defaultType )
<a name="l00256"></a>00256 {
<a name="l00257"></a>00257     d-&gt;mimetypes = mimeTypes;
<a name="l00258"></a>00258     filterWidget-&gt;setMimeFilter( mimeTypes, defaultType );
<a name="l00259"></a>00259 
<a name="l00260"></a>00260     <a class="codeRef" href="qstringlist.html">QStringList</a> types = <a class="codeRef" href="qstringlist.html#split">QStringList::split</a>(<span class="stringliteral">&quot; &quot;</span>, filterWidget-&gt;currentFilter());
<a name="l00261"></a>00261     types.append( <a class="codeRef" href="qstring.html#fromLatin1">QString::fromLatin1</a>( <span class="stringliteral">&quot;inode/directory&quot;</span> ));
<a name="l00262"></a>00262     ops-&gt;<a class="code" href="classKDirOperator.html#a8e0d890a72acd97a0a1b793a7a51a1c5" title="Clears both the namefilter and mimetype filter, so that all files and directories will be shown...">clearFilter</a>();
<a name="l00263"></a>00263     ops-&gt;<a class="code" href="classKDirOperator.html#a217f9a164c41b2ac713ad04bdb5b7da3" title="Sets a list of mimetypes as filter.">setMimeFilter</a>( types );
<a name="l00264"></a>00264     d-&gt;hasDefaultFilter = !defaultType.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>();
<a name="l00265"></a>00265     filterWidget-&gt;setEditable( !d-&gt;hasDefaultFilter ||
<a name="l00266"></a>00266                                d-&gt;operationMode != Saving );
<a name="l00267"></a>00267 
<a name="l00268"></a>00268     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l00269"></a>00269 }
<a name="l00270"></a>00270 
<a name="l00271"></a><a class="code" href="classKFileDialog.html#a4900812f6af6ed23f3a7ca259e1a37d6">00271</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a4900812f6af6ed23f3a7ca259e1a37d6" title="Clears any mime- or namefilter.">KFileDialog::clearFilter</a>()
<a name="l00272"></a>00272 {
<a name="l00273"></a>00273     d-&gt;mimetypes.clear();
<a name="l00274"></a>00274     filterWidget-&gt;setFilter( QString::null );
<a name="l00275"></a>00275     ops-&gt;<a class="code" href="classKDirOperator.html#a8e0d890a72acd97a0a1b793a7a51a1c5" title="Clears both the namefilter and mimetype filter, so that all files and directories will be shown...">clearFilter</a>();
<a name="l00276"></a>00276     d-&gt;hasDefaultFilter = <span class="keyword">false</span>;
<a name="l00277"></a>00277     filterWidget-&gt;setEditable( <span class="keyword">true</span> );
<a name="l00278"></a>00278 
<a name="l00279"></a>00279     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l00280"></a>00280 }
<a name="l00281"></a>00281 
<a name="l00282"></a><a class="code" href="classKFileDialog.html#a2eeee39828dbff80b7bbe8c9ec9d112e">00282</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a2eeee39828dbff80b7bbe8c9ec9d112e" title="The mimetype for the desired output format.">KFileDialog::currentMimeFilter</a>()<span class="keyword"> const</span>
<a name="l00283"></a>00283 <span class="keyword"></span>{
<a name="l00284"></a>00284     <span class="keywordtype">int</span> i = filterWidget-&gt;currentItem();
<a name="l00285"></a>00285     <span class="keywordflow">if</span> (filterWidget-&gt;showsAllTypes())
<a name="l00286"></a>00286         i--;
<a name="l00287"></a>00287 
<a name="l00288"></a>00288     <span class="keywordflow">if</span> ((i &gt;= 0) &amp;&amp; (i &lt; (int) d-&gt;mimetypes.count()))
<a name="l00289"></a>00289         <span class="keywordflow">return</span> d-&gt;mimetypes[i];
<a name="l00290"></a>00290     <span class="keywordflow">return</span> QString::null; <span class="comment">// The &quot;all types&quot; item has no mimetype</span>
<a name="l00291"></a>00291 }
<a name="l00292"></a>00292 
<a name="l00293"></a><a class="code" href="classKFileDialog.html#a0d0fd971d3f18bdf0fcfdb07db594937">00293</a> KMimeType::Ptr <a class="code" href="classKFileDialog.html#a0d0fd971d3f18bdf0fcfdb07db594937" title="Returns the mimetype for the desired output format.">KFileDialog::currentFilterMimeType</a>()
<a name="l00294"></a>00294 {
<a name="l00295"></a>00295     <span class="keywordflow">return</span> KMimeType::mimeType( <a class="code" href="classKFileDialog.html#a2eeee39828dbff80b7bbe8c9ec9d112e" title="The mimetype for the desired output format.">currentMimeFilter</a>() );
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 
<a name="l00298"></a><a class="code" href="classKFileDialog.html#a06cea0a52c01be38eac1214ac4dc845e">00298</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a06cea0a52c01be38eac1214ac4dc845e">KFileDialog::setPreviewWidget</a>(<span class="keyword">const</span> <a class="codeRef" href="qwidget.html">QWidget</a> *w) {
<a name="l00299"></a>00299     ops-&gt;<a class="code" href="classKDirOperator.html#a8ae9ae90f264b0ecc3b95f660b16653a" title="Sets a preview-widget to be shown next to the file-view.">setPreviewWidget</a>(w);
<a name="l00300"></a>00300     ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l00301"></a>00301     d-&gt;hasView = <span class="keyword">true</span>;
<a name="l00302"></a>00302 }
<a name="l00303"></a>00303 
<a name="l00304"></a><a class="code" href="classKFileDialog.html#a066ec89536a517169c71265eeb189d59">00304</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a06cea0a52c01be38eac1214ac4dc845e">KFileDialog::setPreviewWidget</a>(<span class="keyword">const</span> <a class="code" href="classKPreviewWidgetBase.html" title="Abstract baseclass for all preview widgets which shall be used via KFileDialog::setPreviewWidget(cons...">KPreviewWidgetBase</a> *w) {
<a name="l00305"></a>00305     ops-&gt;<a class="code" href="classKDirOperator.html#a8ae9ae90f264b0ecc3b95f660b16653a" title="Sets a preview-widget to be shown next to the file-view.">setPreviewWidget</a>(w);
<a name="l00306"></a>00306     ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l00307"></a>00307     d-&gt;hasView = <span class="keyword">true</span>;
<a name="l00308"></a>00308 }
<a name="l00309"></a>00309 
<a name="l00310"></a><a class="code" href="classKFileDialog.html#ac22fc863a7a20da581a480bd7b9f67eb">00310</a> KURL <a class="code" href="classKFileDialog.html#ac22fc863a7a20da581a480bd7b9f67eb" title="Returns the absolute version of the URL specified in locationEdit.">KFileDialog::getCompleteURL</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;_url)
<a name="l00311"></a>00311 {
<a name="l00312"></a>00312     <a class="codeRef" href="qstring.html">QString</a> url = KShell::tildeExpand(_url);
<a name="l00313"></a>00313     KURL u;
<a name="l00314"></a>00314 
<a name="l00315"></a>00315     <span class="keywordflow">if</span> ( KURL::isRelativeURL(url) ) <span class="comment">// only a full URL isn&#39;t relative. Even /path is.</span>
<a name="l00316"></a>00316     {
<a name="l00317"></a>00317         <span class="keywordflow">if</span> (!url.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; !<a class="codeRef" href="qdir.html#isRelativePath">QDir::isRelativePath</a>(url) ) <span class="comment">// absolute path</span>
<a name="l00318"></a>00318             u.setPath( url );
<a name="l00319"></a>00319         <span class="keywordflow">else</span>
<a name="l00320"></a>00320         {
<a name="l00321"></a>00321             u = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00322"></a>00322             u.addPath( url ); <span class="comment">// works for filenames and relative paths</span>
<a name="l00323"></a>00323             u.cleanPath(); <span class="comment">// fix &quot;dir/..&quot;</span>
<a name="l00324"></a>00324         }
<a name="l00325"></a>00325     }
<a name="l00326"></a>00326     <span class="keywordflow">else</span> <span class="comment">// complete URL</span>
<a name="l00327"></a>00327         u = url;
<a name="l00328"></a>00328 
<a name="l00329"></a>00329     <span class="keywordflow">return</span> u;
<a name="l00330"></a>00330 }
<a name="l00331"></a>00331 
<a name="l00332"></a>00332 <span class="comment">// FIXME: check for &quot;existing&quot; flag here?</span>
<a name="l00333"></a>00333 <span class="keywordtype">void</span> KFileDialog::slotOk()
<a name="l00334"></a>00334 {
<a name="l00335"></a>00335     kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;slotOK\n&quot;</span>;
<a name="l00336"></a>00336 
<a name="l00337"></a>00337     <span class="comment">// a list of all selected files/directories (if any)</span>
<a name="l00338"></a>00338     <span class="comment">// can only be used if the user didn&#39;t type any filenames/urls himself</span>
<a name="l00339"></a>00339     <span class="keyword">const</span> KFileItemList *items = ops-&gt;<a class="code" href="classKDirOperator.html#aba4acf57290836e2d40e1a0c91c48d05">selectedItems</a>();
<a name="l00340"></a>00340 
<a name="l00341"></a>00341     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Directory) != KFile::Directory ) {
<a name="l00342"></a>00342         <span class="keywordflow">if</span> ( locationEdit-&gt;currentText().stripWhiteSpace().isEmpty() ) {
<a name="l00343"></a>00343             <span class="keywordflow">if</span> ( !items || items-&gt;isEmpty() )
<a name="l00344"></a>00344             {
<a name="l00345"></a>00345                 <a class="codeRef" href="qstring.html">QString</a> msg;
<a name="l00346"></a>00346                 <span class="keywordflow">if</span> ( d-&gt;operationMode == Saving )
<a name="l00347"></a>00347                     msg = i18n(<span class="stringliteral">&quot;Please specify the filename to save to.&quot;</span>);
<a name="l00348"></a>00348                 <span class="keywordflow">else</span>
<a name="l00349"></a>00349                     msg = i18n(<span class="stringliteral">&quot;Please select the file to open.&quot;</span>);
<a name="l00350"></a>00350                 KMessageBox::information(<span class="keyword">this</span>, msg);
<a name="l00351"></a>00351                 <span class="keywordflow">return</span>;
<a name="l00352"></a>00352             }
<a name="l00353"></a>00353 
<a name="l00354"></a>00354             <span class="comment">// weird case: the location edit is empty, but there are</span>
<a name="l00355"></a>00355             <span class="comment">// highlighted files</span>
<a name="l00356"></a>00356             <span class="keywordflow">else</span> {
<a name="l00357"></a>00357 
<a name="l00358"></a>00358                 <span class="keywordtype">bool</span> multi = (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) != 0;
<a name="l00359"></a>00359                 KFileItemListIterator it( *items );
<a name="l00360"></a>00360                 <a class="codeRef" href="qstring.html">QString</a> endQuote = <a class="codeRef" href="qstring.html#fromLatin1">QString::fromLatin1</a>(<span class="stringliteral">&quot;\&quot; &quot;</span>);
<a name="l00361"></a>00361                 <a class="codeRef" href="qstring.html">QString</a> name, files;
<a name="l00362"></a>00362                 <span class="keywordflow">while</span> ( it.current() ) {
<a name="l00363"></a>00363                     name = (*it)-&gt;name();
<a name="l00364"></a>00364                     <span class="keywordflow">if</span> ( multi ) {
<a name="l00365"></a>00365                         name.<a class="codeRef" href="qstring.html#prepend">prepend</a>( <span class="charliteral">&#39;&quot;&#39;</span> );
<a name="l00366"></a>00366                         name.<a class="codeRef" href="qstring.html#append">append</a>( endQuote );
<a name="l00367"></a>00367                     }
<a name="l00368"></a>00368 
<a name="l00369"></a>00369                     files.<a class="codeRef" href="qstring.html#append">append</a>( name );
<a name="l00370"></a>00370                     ++it;
<a name="l00371"></a>00371                 }
<a name="l00372"></a>00372                 setLocationText( files );
<a name="l00373"></a>00373                 <span class="keywordflow">return</span>;
<a name="l00374"></a>00374             }
<a name="l00375"></a>00375         }
<a name="l00376"></a>00376     }
<a name="l00377"></a>00377 
<a name="l00378"></a>00378     <span class="keywordtype">bool</span> dirOnly = ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>();
<a name="l00379"></a>00379 
<a name="l00380"></a>00380     <span class="comment">// we can use our kfileitems, no need to parse anything</span>
<a name="l00381"></a>00381     <span class="keywordflow">if</span> ( items &amp;&amp; !locationEdit-&gt;lineEdit()-&gt;edited() &amp;&amp;
<a name="l00382"></a>00382          !(items-&gt;isEmpty() &amp;&amp; !dirOnly) ) {
<a name="l00383"></a>00383 
<a name="l00384"></a>00384         d-&gt;urlList.clear();
<a name="l00385"></a>00385         d-&gt;filenames = QString::null;
<a name="l00386"></a>00386 
<a name="l00387"></a>00387         <span class="keywordflow">if</span> ( dirOnly ) {
<a name="l00388"></a>00388             d-&gt;url = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00389"></a>00389         }
<a name="l00390"></a>00390         <span class="keywordflow">else</span> {
<a name="l00391"></a>00391             <span class="keywordflow">if</span> ( !(<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) ) {<span class="comment">// single selection</span>
<a name="l00392"></a>00392                 d-&gt;url = items-&gt;getFirst()-&gt;url();
<a name="l00393"></a>00393             }
<a name="l00394"></a>00394 
<a name="l00395"></a>00395             <span class="keywordflow">else</span> { <span class="comment">// multi (dirs and/or files)</span>
<a name="l00396"></a>00396                 d-&gt;url = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00397"></a>00397                 KFileItemListIterator it( *items );
<a name="l00398"></a>00398                 <span class="keywordflow">while</span> ( it.current() ) {
<a name="l00399"></a>00399                     d-&gt;urlList.append( (*it)-&gt;url() );
<a name="l00400"></a>00400                     ++it;
<a name="l00401"></a>00401                 }
<a name="l00402"></a>00402             }
<a name="l00403"></a>00403         }
<a name="l00404"></a>00404 
<a name="l00405"></a>00405         KURL url = KIO::NetAccess::mostLocalURL(d-&gt;url,topLevelWidget());
<a name="l00406"></a>00406         <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::LocalOnly) == KFile::LocalOnly &amp;&amp;
<a name="l00407"></a>00407              !url.isLocalFile() ) {
<a name="l00408"></a>00408 <span class="comment">// ### after message freeze, add message for directories!</span>
<a name="l00409"></a>00409             KMessageBox::sorry( d-&gt;mainWidget,
<a name="l00410"></a>00410                                 i18n(<span class="stringliteral">&quot;You can only select local files.&quot;</span>),
<a name="l00411"></a>00411                                 i18n(<span class="stringliteral">&quot;Remote Files Not Accepted&quot;</span>) );
<a name="l00412"></a>00412             <span class="keywordflow">return</span>;
<a name="l00413"></a>00413         }
<a name="l00414"></a>00414 
<a name="l00415"></a>00415         d-&gt;url = url;
<a name="l00416"></a>00416         accept();
<a name="l00417"></a>00417         <span class="keywordflow">return</span>;
<a name="l00418"></a>00418     }
<a name="l00419"></a>00419 
<a name="l00420"></a>00420 
<a name="l00421"></a>00421     KURL <a class="code" href="classKFileDialog.html#a077c93d601ed673aa4221fa540f8fc50">selectedURL</a>;
<a name="l00422"></a>00422 
<a name="l00423"></a>00423     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) == KFile::Files ) {<span class="comment">// multiselection mode</span>
<a name="l00424"></a>00424         <a class="codeRef" href="qstring.html">QString</a> locationText = locationEdit-&gt;currentText();
<a name="l00425"></a>00425         <span class="keywordflow">if</span> ( locationText.<a class="codeRef" href="qstring.html#contains">contains</a>( <span class="charliteral">&#39;/&#39;</span> )) {
<a name="l00426"></a>00426             <span class="comment">// relative path? -&gt; prepend the current directory</span>
<a name="l00427"></a>00427             KURL u( ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>(), KShell::tildeExpand(locationText));
<a name="l00428"></a>00428             <span class="keywordflow">if</span> ( u.isValid() )
<a name="l00429"></a>00429                 selectedURL = u;
<a name="l00430"></a>00430             <span class="keywordflow">else</span>
<a name="l00431"></a>00431                 selectedURL = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00432"></a>00432         }
<a name="l00433"></a>00433         <span class="keywordflow">else</span> <span class="comment">// simple filename -&gt; just use the current URL</span>
<a name="l00434"></a>00434             selectedURL = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00435"></a>00435     }
<a name="l00436"></a>00436 
<a name="l00437"></a>00437     <span class="keywordflow">else</span> {
<a name="l00438"></a>00438         selectedURL = <a class="code" href="classKFileDialog.html#ac22fc863a7a20da581a480bd7b9f67eb" title="Returns the absolute version of the URL specified in locationEdit.">getCompleteURL</a>(locationEdit-&gt;currentText());
<a name="l00439"></a>00439 
<a name="l00440"></a>00440         <span class="comment">// appendExtension() may change selectedURL</span>
<a name="l00441"></a>00441         appendExtension (selectedURL);
<a name="l00442"></a>00442     }
<a name="l00443"></a>00443 
<a name="l00444"></a>00444     <span class="keywordflow">if</span> ( !selectedURL.isValid() ) {
<a name="l00445"></a>00445        KMessageBox::sorry( d-&gt;mainWidget, i18n(<span class="stringliteral">&quot;%1\ndoes not appear to be a valid URL.\n&quot;</span>).arg(d-&gt;url.url()), i18n(<span class="stringliteral">&quot;Invalid URL&quot;</span>) );
<a name="l00446"></a>00446        <span class="keywordflow">return</span>;
<a name="l00447"></a>00447     }
<a name="l00448"></a>00448 
<a name="l00449"></a>00449     KURL url = KIO::NetAccess::mostLocalURL(selectedURL,topLevelWidget());
<a name="l00450"></a>00450     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::LocalOnly) == KFile::LocalOnly &amp;&amp;
<a name="l00451"></a>00451          !url.isLocalFile() ) {
<a name="l00452"></a>00452         KMessageBox::sorry( d-&gt;mainWidget,
<a name="l00453"></a>00453                             i18n(<span class="stringliteral">&quot;You can only select local files.&quot;</span>),
<a name="l00454"></a>00454                             i18n(<span class="stringliteral">&quot;Remote Files Not Accepted&quot;</span>) );
<a name="l00455"></a>00455         <span class="keywordflow">return</span>;
<a name="l00456"></a>00456     }
<a name="l00457"></a>00457 
<a name="l00458"></a>00458     d-&gt;url = url;
<a name="l00459"></a>00459 
<a name="l00460"></a>00460     <span class="comment">// d-&gt;url is a correct URL now</span>
<a name="l00461"></a>00461 
<a name="l00462"></a>00462     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Directory) == KFile::Directory ) {
<a name="l00463"></a>00463         kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;Directory&quot;</span> &lt;&lt; endl;
<a name="l00464"></a>00464         <span class="keywordtype">bool</span> done = <span class="keyword">true</span>;
<a name="l00465"></a>00465         <span class="keywordflow">if</span> ( d-&gt;url.isLocalFile() ) {
<a name="l00466"></a>00466             <span class="keywordflow">if</span> ( locationEdit-&gt;currentText().stripWhiteSpace().isEmpty() ) {
<a name="l00467"></a>00467                 <a class="codeRef" href="qfileinfo.html">QFileInfo</a> info( d-&gt;url.path() );
<a name="l00468"></a>00468                 <span class="keywordflow">if</span> ( info.isDir() ) {
<a name="l00469"></a>00469                     d-&gt;filenames = QString::null;
<a name="l00470"></a>00470                     d-&gt;urlList.clear();
<a name="l00471"></a>00471                     d-&gt;urlList.append( d-&gt;url );
<a name="l00472"></a>00472                     accept();
<a name="l00473"></a>00473                 }
<a name="l00474"></a>00474                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!info.exists() &amp;&amp; (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::File) != KFile::File) {
<a name="l00475"></a>00475                     <span class="comment">// directory doesn&#39;t exist, create and enter it</span>
<a name="l00476"></a>00476                     <span class="keywordflow">if</span> ( ops-&gt;<a class="code" href="classKDirOperator.html#af4f2f737f5ea89bab9dab940a1730b9c" title="Creates the given directory/url.">mkdir</a>( d-&gt;url.url(), true ))
<a name="l00477"></a>00477                         <span class="keywordflow">return</span>;
<a name="l00478"></a>00478                     <span class="keywordflow">else</span>
<a name="l00479"></a>00479                         accept();
<a name="l00480"></a>00480                 }
<a name="l00481"></a>00481                 <span class="keywordflow">else</span> { <span class="comment">// d-&gt;url is not a directory,</span>
<a name="l00482"></a>00482                     <span class="comment">// maybe we are in File(s) | Directory mode</span>
<a name="l00483"></a>00483                     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::File) == KFile::File ||
<a name="l00484"></a>00484                         (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) == KFile::Files )
<a name="l00485"></a>00485                         done = <span class="keyword">false</span>;
<a name="l00486"></a>00486                 }
<a name="l00487"></a>00487             }
<a name="l00488"></a>00488             <span class="keywordflow">else</span>  <span class="comment">// Directory mode, with file[s]/dir[s] selected</span>
<a name="l00489"></a>00489             {
<a name="l00490"></a>00490                 <span class="keywordflow">if</span> ( <a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::ExistingOnly )
<a name="l00491"></a>00491                 {
<a name="l00492"></a>00492                     <span class="keywordflow">if</span> ( ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>() )
<a name="l00493"></a>00493                     {
<a name="l00494"></a>00494                         KURL fullURL(d-&gt;url, locationEdit-&gt;currentText());
<a name="l00495"></a>00495                         <span class="keywordflow">if</span> ( <a class="codeRef" href="qfile.html#exists-2">QFile::exists</a>( fullURL.path() ) )
<a name="l00496"></a>00496                         {
<a name="l00497"></a>00497                             d-&gt;url = fullURL;
<a name="l00498"></a>00498                             d-&gt;filenames = QString::null;
<a name="l00499"></a>00499                             d-&gt;urlList.clear();
<a name="l00500"></a>00500                             accept();
<a name="l00501"></a>00501                             <span class="keywordflow">return</span>;
<a name="l00502"></a>00502                         }
<a name="l00503"></a>00503                         <span class="keywordflow">else</span> <span class="comment">// doesn&#39;t exist -&gt; reject</span>
<a name="l00504"></a>00504                             <span class="keywordflow">return</span>;
<a name="l00505"></a>00505                     }
<a name="l00506"></a>00506                 }
<a name="l00507"></a>00507 
<a name="l00508"></a>00508                 d-&gt;filenames = locationEdit-&gt;currentText();
<a name="l00509"></a>00509                 accept(); <span class="comment">// what can we do?</span>
<a name="l00510"></a>00510             }
<a name="l00511"></a>00511 
<a name="l00512"></a>00512         }
<a name="l00513"></a>00513         <span class="keywordflow">else</span> { <span class="comment">// FIXME: remote directory, should we allow that?</span>
<a name="l00514"></a>00514 <span class="comment">//             qDebug( &quot;**** Selected remote directory: %s&quot;, d-&gt;url.url().latin1());</span>
<a name="l00515"></a>00515             d-&gt;filenames = QString::null;
<a name="l00516"></a>00516             d-&gt;urlList.clear();
<a name="l00517"></a>00517             d-&gt;urlList.append( d-&gt;url );
<a name="l00518"></a>00518 
<a name="l00519"></a>00519             <span class="keywordflow">if</span> ( <a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::ExistingOnly )
<a name="l00520"></a>00520                 done = <span class="keyword">false</span>;
<a name="l00521"></a>00521             <span class="keywordflow">else</span>
<a name="l00522"></a>00522                 accept();
<a name="l00523"></a>00523         }
<a name="l00524"></a>00524 
<a name="l00525"></a>00525         <span class="keywordflow">if</span> ( done )
<a name="l00526"></a>00526             <span class="keywordflow">return</span>;
<a name="l00527"></a>00527     }
<a name="l00528"></a>00528 
<a name="l00529"></a>00529     <span class="keywordflow">if</span> (!kapp-&gt;authorizeURLAction(<span class="stringliteral">&quot;open&quot;</span>, KURL(), d-&gt;url))
<a name="l00530"></a>00530     {
<a name="l00531"></a>00531         <a class="codeRef" href="qstring.html">QString</a> msg = KIO::buildErrorString(KIO::ERR_ACCESS_DENIED, d-&gt;url.prettyURL());
<a name="l00532"></a>00532         KMessageBox::error( d-&gt;mainWidget, msg);
<a name="l00533"></a>00533         <span class="keywordflow">return</span>;
<a name="l00534"></a>00534     }
<a name="l00535"></a>00535 
<a name="l00536"></a>00536     KIO::StatJob *job = 0L;
<a name="l00537"></a>00537     d-&gt;statJobs.clear();
<a name="l00538"></a>00538     d-&gt;filenames = KShell::tildeExpand(locationEdit-&gt;currentText());
<a name="l00539"></a>00539 
<a name="l00540"></a>00540     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) == KFile::Files &amp;&amp;
<a name="l00541"></a>00541          !locationEdit-&gt;currentText().contains( <span class="charliteral">&#39;/&#39;</span> )) {
<a name="l00542"></a>00542         kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;Files\n&quot;</span>;
<a name="l00543"></a>00543         KURL::List list = parseSelectedURLs();
<a name="l00544"></a>00544         <span class="keywordflow">for</span> ( KURL::List::ConstIterator it = list.begin();
<a name="l00545"></a>00545               it != list.end(); ++it )
<a name="l00546"></a>00546         {
<a name="l00547"></a>00547             <span class="keywordflow">if</span> (!kapp-&gt;authorizeURLAction(<span class="stringliteral">&quot;open&quot;</span>, KURL(), *it))
<a name="l00548"></a>00548             {
<a name="l00549"></a>00549                 <a class="codeRef" href="qstring.html">QString</a> msg = KIO::buildErrorString(KIO::ERR_ACCESS_DENIED, (*it).prettyURL());
<a name="l00550"></a>00550                 KMessageBox::error( d-&gt;mainWidget, msg);
<a name="l00551"></a>00551                 <span class="keywordflow">return</span>;
<a name="l00552"></a>00552             }
<a name="l00553"></a>00553         }
<a name="l00554"></a>00554         <span class="keywordflow">for</span> ( KURL::List::ConstIterator it = list.begin();
<a name="l00555"></a>00555               it != list.end(); ++it )
<a name="l00556"></a>00556         {
<a name="l00557"></a>00557             job = KIO::stat( *it, !(*it).isLocalFile() );
<a name="l00558"></a>00558             job-&gt;setWindow (topLevelWidget());
<a name="l00559"></a>00559             KIO::Scheduler::scheduleJob( job );
<a name="l00560"></a>00560             d-&gt;statJobs.append( job );
<a name="l00561"></a>00561             connect( job, SIGNAL( result(KIO::Job *) ),
<a name="l00562"></a>00562                      SLOT( slotStatResult( KIO::Job *) ));
<a name="l00563"></a>00563         }
<a name="l00564"></a>00564         <span class="keywordflow">return</span>;
<a name="l00565"></a>00565     }
<a name="l00566"></a>00566 
<a name="l00567"></a>00567     job = KIO::stat(d-&gt;url,!d-&gt;url.isLocalFile());
<a name="l00568"></a>00568     job-&gt;setWindow (topLevelWidget());
<a name="l00569"></a>00569     d-&gt;statJobs.append( job );
<a name="l00570"></a>00570     connect(job, SIGNAL(result(KIO::Job*)), SLOT(slotStatResult(KIO::Job*)));
<a name="l00571"></a>00571 }
<a name="l00572"></a>00572 
<a name="l00573"></a>00573 
<a name="l00574"></a>00574 <span class="keyword">static</span> <span class="keywordtype">bool</span> isDirectory (<span class="keyword">const</span> KIO::UDSEntry &amp;t)
<a name="l00575"></a>00575 {
<a name="l00576"></a>00576     <span class="keywordtype">bool</span> isDir = <span class="keyword">false</span>;
<a name="l00577"></a>00577 
<a name="l00578"></a>00578     <span class="keywordflow">for</span> (KIO::UDSEntry::ConstIterator it = t.begin();
<a name="l00579"></a>00579          it != t.end();
<a name="l00580"></a>00580          it++)
<a name="l00581"></a>00581     {
<a name="l00582"></a>00582         <span class="keywordflow">if</span> ((*it).m_uds == KIO::UDS_FILE_TYPE)
<a name="l00583"></a>00583         {
<a name="l00584"></a>00584             isDir = S_ISDIR ((mode_t) ((*it).m_long));
<a name="l00585"></a>00585             <span class="keywordflow">break</span>;
<a name="l00586"></a>00586         }
<a name="l00587"></a>00587     }
<a name="l00588"></a>00588 
<a name="l00589"></a>00589     <span class="keywordflow">return</span> isDir;
<a name="l00590"></a>00590 }
<a name="l00591"></a>00591 
<a name="l00592"></a>00592 <span class="comment">// FIXME : count all errors and show messagebox when d-&gt;statJobs.count() == 0</span>
<a name="l00593"></a>00593 <span class="comment">// in case of an error, we cancel the whole operation (clear d-&gt;statJobs and</span>
<a name="l00594"></a>00594 <span class="comment">// don&#39;t call accept)</span>
<a name="l00595"></a>00595 <span class="keywordtype">void</span> KFileDialog::slotStatResult(KIO::Job* job)
<a name="l00596"></a>00596 {
<a name="l00597"></a>00597     kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;slotStatResult&quot;</span> &lt;&lt; endl;
<a name="l00598"></a>00598     KIO::StatJob *sJob = <span class="keyword">static_cast&lt;</span>KIO::StatJob *<span class="keyword">&gt;</span>( job );
<a name="l00599"></a>00599 
<a name="l00600"></a>00600     <span class="keywordflow">if</span> ( !d-&gt;statJobs.removeRef( sJob ) ) {
<a name="l00601"></a>00601         <span class="keywordflow">return</span>;
<a name="l00602"></a>00602     }
<a name="l00603"></a>00603 
<a name="l00604"></a>00604     <span class="keywordtype">int</span> count = d-&gt;statJobs.count();
<a name="l00605"></a>00605 
<a name="l00606"></a>00606     <span class="comment">// errors mean in general, the location is no directory ;/</span>
<a name="l00607"></a>00607     <span class="comment">// Can we be sure that it is exististant at all? (pfeiffer)</span>
<a name="l00608"></a>00608     <span class="keywordflow">if</span> (sJob-&gt;error() &amp;&amp; count == 0 &amp;&amp; !ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>())
<a name="l00609"></a>00609     {
<a name="l00610"></a>00610         accept();
<a name="l00611"></a>00611         <span class="keywordflow">return</span>;
<a name="l00612"></a>00612     }
<a name="l00613"></a>00613 
<a name="l00614"></a>00614     KIO::UDSEntry t = sJob-&gt;statResult();
<a name="l00615"></a>00615     <span class="keywordflow">if</span> (isDirectory (t))
<a name="l00616"></a>00616     {
<a name="l00617"></a>00617         <span class="keywordflow">if</span> ( ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>() )
<a name="l00618"></a>00618         {
<a name="l00619"></a>00619             d-&gt;filenames = QString::null;
<a name="l00620"></a>00620             d-&gt;urlList.clear();
<a name="l00621"></a>00621             accept();
<a name="l00622"></a>00622         }
<a name="l00623"></a>00623         <span class="keywordflow">else</span> <span class="comment">// in File[s] mode, directory means error -&gt; cd into it</span>
<a name="l00624"></a>00624         {
<a name="l00625"></a>00625             <span class="keywordflow">if</span> ( count == 0 ) {
<a name="l00626"></a>00626                 locationEdit-&gt;clearEdit();
<a name="l00627"></a>00627                 locationEdit-&gt;lineEdit()-&gt;setEdited( <span class="keyword">false</span> );
<a name="l00628"></a>00628                 <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">setURL</a>( sJob-&gt;url() );
<a name="l00629"></a>00629             }
<a name="l00630"></a>00630         }
<a name="l00631"></a>00631         d-&gt;statJobs.clear();
<a name="l00632"></a>00632         <span class="keywordflow">return</span>;
<a name="l00633"></a>00633     }
<a name="l00634"></a>00634     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>() )
<a name="l00635"></a>00635     {
<a name="l00636"></a>00636         <span class="keywordflow">return</span>; <span class="comment">// ### error message?</span>
<a name="l00637"></a>00637     }
<a name="l00638"></a>00638 
<a name="l00639"></a>00639     kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;filename &quot;</span> &lt;&lt; sJob-&gt;url().url() &lt;&lt; endl;
<a name="l00640"></a>00640 
<a name="l00641"></a>00641     <span class="keywordflow">if</span> ( count == 0 )
<a name="l00642"></a>00642         accept();
<a name="l00643"></a>00643 }
<a name="l00644"></a>00644 
<a name="l00645"></a>00645 <span class="keywordtype">void</span> KFileDialog::accept()
<a name="l00646"></a>00646 {
<a name="l00647"></a>00647     setResult( QDialog::Accepted ); <span class="comment">// parseSelectedURLs() checks that</span>
<a name="l00648"></a>00648 
<a name="l00649"></a>00649     *lastDirectory = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l00650"></a>00650     <span class="keywordflow">if</span> (!d-&gt;fileClass.isEmpty())
<a name="l00651"></a>00651        <a class="code" href="classKRecentDirs.html#a9c29070d100ba1617ddffb3b71fd815f" title="Associates directory with fileClass.">KRecentDirs::add</a>(d-&gt;fileClass, ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>().url());
<a name="l00652"></a>00652 
<a name="l00653"></a>00653     <span class="comment">// clear the topmost item, we insert it as full path later on as item 1</span>
<a name="l00654"></a>00654     locationEdit-&gt;changeItem( QString::null, 0 );
<a name="l00655"></a>00655 
<a name="l00656"></a>00656     KURL::List list = <a class="code" href="classKFileDialog.html#a8b423a101f59dcd6b65a9a1a6c1d102c">selectedURLs</a>();
<a name="l00657"></a>00657     <a class="codeRef" href="qvaluelistconstiterator.html">QValueListConstIterator&lt;KURL&gt;</a> it = list.begin();
<a name="l00658"></a>00658     <span class="keywordflow">for</span> ( ; it != list.end(); ++it ) {
<a name="l00659"></a>00659         <span class="keyword">const</span> KURL&amp; url = *it;
<a name="l00660"></a>00660         <span class="comment">// we strip the last slash (-1) because KURLComboBox does that as well</span>
<a name="l00661"></a>00661         <span class="comment">// when operating in file-mode. If we wouldn&#39;t , dupe-finding wouldn&#39;t</span>
<a name="l00662"></a>00662         <span class="comment">// work.</span>
<a name="l00663"></a>00663         <a class="codeRef" href="qstring.html">QString</a> file = url.isLocalFile() ? url.path(-1) : url.prettyURL(-1);
<a name="l00664"></a>00664 
<a name="l00665"></a>00665         <span class="comment">// remove dupes</span>
<a name="l00666"></a>00666         <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 1; i &lt; locationEdit-&gt;count(); i++ ) {
<a name="l00667"></a>00667             <span class="keywordflow">if</span> ( locationEdit-&gt;text( i ) == file ) {
<a name="l00668"></a>00668                 locationEdit-&gt;removeItem( i-- );
<a name="l00669"></a>00669                 <span class="keywordflow">break</span>;
<a name="l00670"></a>00670             }
<a name="l00671"></a>00671         }
<a name="l00672"></a>00672         locationEdit-&gt;insertItem( file, 1 );
<a name="l00673"></a>00673     }
<a name="l00674"></a>00674 
<a name="l00675"></a>00675     KConfig *config = KGlobal::config();
<a name="l00676"></a>00676     config-&gt;setForceGlobal( <span class="keyword">true</span> );
<a name="l00677"></a>00677     <a class="code" href="classKFileDialog.html#ae60384cda5851a55e766fb164d18a472" title="Saves the current configuration.">writeConfig</a>( config, ConfigGroup );
<a name="l00678"></a>00678     config-&gt;setForceGlobal( <span class="keyword">false</span> );
<a name="l00679"></a>00679 
<a name="l00680"></a>00680     <a class="code" href="classKFileDialog.html#a04b6c10cad49278ec158ddfbce4a505a" title="Saves the entries from the location combobox.">saveRecentFiles</a>( config );
<a name="l00681"></a>00681     config-&gt;sync();
<a name="l00682"></a>00682 
<a name="l00683"></a>00683     KDialogBase::accept();
<a name="l00684"></a>00684 
<a name="l00685"></a>00685     addToRecentDocuments();
<a name="l00686"></a>00686 
<a name="l00687"></a>00687     <span class="keywordflow">if</span> ( (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::Files) != KFile::Files ) <span class="comment">// single selection</span>
<a name="l00688"></a>00688         emit <a class="code" href="classKFileDialog.html#aca1ee0834aa99e24008857518720f746" title="Emitted when the user selects a file.">fileSelected</a>(d-&gt;url.url());
<a name="l00689"></a>00689 
<a name="l00690"></a>00690     ops-&gt;<a class="code" href="classKDirOperator.html#a488b3c9d13d723ea12c9303ae21616e2" title="Stops loading immediately.">close</a>();
<a name="l00691"></a>00691     emit okClicked();
<a name="l00692"></a>00692 }
<a name="l00693"></a>00693 
<a name="l00694"></a>00694 
<a name="l00695"></a>00695 <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ab196d6d2272bb83187bfea578cd8bc8a" title="Emitted when the user highlights a file.">KFileDialog::fileHighlighted</a>(<span class="keyword">const</span> KFileItem *i)
<a name="l00696"></a>00696 {
<a name="l00697"></a>00697     <span class="keywordflow">if</span> (i &amp;&amp; i-&gt;isDir())
<a name="l00698"></a>00698         <span class="keywordflow">return</span>;
<a name="l00699"></a>00699 
<a name="l00700"></a>00700 
<a name="l00701"></a>00701     <span class="keywordflow">if</span> ( (ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>() &amp; KFile::Files) != KFile::Files ) {
<a name="l00702"></a>00702         <span class="keywordflow">if</span> ( !i )
<a name="l00703"></a>00703             <span class="keywordflow">return</span>;
<a name="l00704"></a>00704 
<a name="l00705"></a>00705         d-&gt;url = i-&gt;url();
<a name="l00706"></a>00706 
<a name="l00707"></a>00707         <span class="keywordflow">if</span> ( !locationEdit-&gt;hasFocus() ) { <span class="comment">// don&#39;t disturb while editing</span>
<a name="l00708"></a>00708             setLocationText( i-&gt;name() );
<a name="l00709"></a>00709         }
<a name="l00710"></a>00710         emit <a class="code" href="classKFileDialog.html#ab196d6d2272bb83187bfea578cd8bc8a" title="Emitted when the user highlights a file.">fileHighlighted</a>(d-&gt;url.url());
<a name="l00711"></a>00711     }
<a name="l00712"></a>00712 
<a name="l00713"></a>00713     <span class="keywordflow">else</span> {
<a name="l00714"></a>00714         <a class="code" href="classKFileDialog.html#a8c166a380249e9991b3e18d211c1a750" title="called when an item is highlighted/selected in multiselection mode.">multiSelectionChanged</a>();
<a name="l00715"></a>00715         emit <a class="code" href="classKFileDialog.html#a83e46627c7d19fa4674c0c0e5c18f3b0" title="Emitted when the user hilights one or more files in multiselection mode.">selectionChanged</a>();
<a name="l00716"></a>00716     }
<a name="l00717"></a>00717 }
<a name="l00718"></a>00718 
<a name="l00719"></a>00719 <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#aca1ee0834aa99e24008857518720f746" title="Emitted when the user selects a file.">KFileDialog::fileSelected</a>(<span class="keyword">const</span> KFileItem *i)
<a name="l00720"></a>00720 {
<a name="l00721"></a>00721     <span class="keywordflow">if</span> (i &amp;&amp; i-&gt;isDir())
<a name="l00722"></a>00722         <span class="keywordflow">return</span>;
<a name="l00723"></a>00723 
<a name="l00724"></a>00724     <span class="keywordflow">if</span> ( (ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>() &amp; KFile::Files) != KFile::Files ) {
<a name="l00725"></a>00725         <span class="keywordflow">if</span> ( !i )
<a name="l00726"></a>00726             <span class="keywordflow">return</span>;
<a name="l00727"></a>00727 
<a name="l00728"></a>00728         d-&gt;url = i-&gt;url();
<a name="l00729"></a>00729         setLocationText( i-&gt;name() );
<a name="l00730"></a>00730     }
<a name="l00731"></a>00731     <span class="keywordflow">else</span> {
<a name="l00732"></a>00732         <a class="code" href="classKFileDialog.html#a8c166a380249e9991b3e18d211c1a750" title="called when an item is highlighted/selected in multiselection mode.">multiSelectionChanged</a>();
<a name="l00733"></a>00733         emit <a class="code" href="classKFileDialog.html#a83e46627c7d19fa4674c0c0e5c18f3b0" title="Emitted when the user hilights one or more files in multiselection mode.">selectionChanged</a>();
<a name="l00734"></a>00734     }
<a name="l00735"></a>00735     slotOk();
<a name="l00736"></a>00736 }
<a name="l00737"></a>00737 
<a name="l00738"></a>00738 
<a name="l00739"></a>00739 <span class="comment">// I know it&#39;s slow to always iterate thru the whole filelist</span>
<a name="l00740"></a>00740 <span class="comment">// (ops-&gt;selectedItems()), but what can we do?</span>
<a name="l00741"></a><a class="code" href="classKFileDialog.html#a8c166a380249e9991b3e18d211c1a750">00741</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a8c166a380249e9991b3e18d211c1a750" title="called when an item is highlighted/selected in multiselection mode.">KFileDialog::multiSelectionChanged</a>()
<a name="l00742"></a>00742 {
<a name="l00743"></a>00743     <span class="keywordflow">if</span> ( locationEdit-&gt;hasFocus() ) <span class="comment">// don&#39;t disturb</span>
<a name="l00744"></a>00744         <span class="keywordflow">return</span>;
<a name="l00745"></a>00745 
<a name="l00746"></a>00746     locationEdit-&gt;lineEdit()-&gt;setEdited( <span class="keyword">false</span> );
<a name="l00747"></a>00747     KFileItem *item;
<a name="l00748"></a>00748     <span class="keyword">const</span> KFileItemList *list = ops-&gt;<a class="code" href="classKDirOperator.html#aba4acf57290836e2d40e1a0c91c48d05">selectedItems</a>();
<a name="l00749"></a>00749     <span class="keywordflow">if</span> ( !list ) {
<a name="l00750"></a>00750         locationEdit-&gt;clearEdit();
<a name="l00751"></a>00751         <span class="keywordflow">return</span>;
<a name="l00752"></a>00752     }
<a name="l00753"></a>00753 
<a name="l00754"></a>00754     <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;begin = KGlobal::staticQString(<span class="stringliteral">&quot; \&quot;&quot;</span>);
<a name="l00755"></a>00755     KFileItemListIterator it ( *list );
<a name="l00756"></a>00756     <a class="codeRef" href="qstring.html">QString</a> text;
<a name="l00757"></a>00757     <span class="keywordflow">while</span> ( (item = it.current()) ) {
<a name="l00758"></a>00758         text.<a class="codeRef" href="qstring.html#append">append</a>( begin ).append( item-&gt;name() ).append( <span class="charliteral">&#39;\&quot;&#39;</span> );
<a name="l00759"></a>00759         ++it;
<a name="l00760"></a>00760     }
<a name="l00761"></a>00761 
<a name="l00762"></a>00762     setLocationText( text.<a class="codeRef" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>() );
<a name="l00763"></a>00763 }
<a name="l00764"></a>00764 
<a name="l00765"></a>00765 <span class="keywordtype">void</span> KFileDialog::setLocationText( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; text )
<a name="l00766"></a>00766 {
<a name="l00767"></a>00767     <span class="comment">// setCurrentItem() will cause textChanged() being emitted,</span>
<a name="l00768"></a>00768     <span class="comment">// so slotLocationChanged() will be called. Make sure we don&#39;t clear</span>
<a name="l00769"></a>00769     <span class="comment">// the KDirOperator&#39;s view-selection in there</span>
<a name="l00770"></a>00770     disconnect( locationEdit, SIGNAL( textChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ),
<a name="l00771"></a>00771                 <span class="keyword">this</span>, SLOT( slotLocationChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ) );
<a name="l00772"></a>00772     locationEdit-&gt;setCurrentItem( 0 );
<a name="l00773"></a>00773     connect( locationEdit, SIGNAL( textChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ),
<a name="l00774"></a>00774              SLOT( slotLocationChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )) );
<a name="l00775"></a>00775     locationEdit-&gt;setEditText( text );
<a name="l00776"></a>00776 
<a name="l00777"></a>00777     <span class="comment">// don&#39;t change selection when user has clicked on an item</span>
<a name="l00778"></a>00778     <span class="keywordflow">if</span> ( d-&gt;operationMode == Saving &amp;&amp; !locationEdit-&gt;isVisible())
<a name="l00779"></a>00779        setNonExtSelection();
<a name="l00780"></a>00780 }
<a name="l00781"></a>00781 
<a name="l00782"></a>00782 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> autocompletionWhatsThisText[] = I18N_NOOP(<span class="stringliteral">&quot;&lt;p&gt;While typing in the text area, you may be presented &quot;</span>
<a name="l00783"></a>00783                                                   <span class="stringliteral">&quot;with possible matches. &quot;</span>
<a name="l00784"></a>00784                                                   <span class="stringliteral">&quot;This feature can be controlled by clicking with the right mouse button &quot;</span>
<a name="l00785"></a>00785                                                   <span class="stringliteral">&quot;and selecting a preferred mode from the &lt;b&gt;Text Completion&lt;/b&gt; menu.&quot;</span>)  <span class="stringliteral">&quot;&lt;/qt&gt;&quot;</span>;
<a name="l00786"></a>00786 <span class="keywordtype">void</span> KFileDialog::updateLocationWhatsThis (<span class="keywordtype">void</span>)
<a name="l00787"></a>00787 {
<a name="l00788"></a>00788     <a class="codeRef" href="qstring.html">QString</a> whatsThisText;
<a name="l00789"></a>00789     <span class="keywordflow">if</span> (d-&gt;operationMode == KFileDialog::Saving)
<a name="l00790"></a>00790     {
<a name="l00791"></a>00791         whatsThisText = <span class="stringliteral">&quot;&lt;qt&gt;&quot;</span> + i18n(<span class="stringliteral">&quot;This is the name to save the file as.&quot;</span>) +
<a name="l00792"></a>00792                              i18n (autocompletionWhatsThisText);
<a name="l00793"></a>00793     }
<a name="l00794"></a>00794     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>() &amp; KFile::Files)
<a name="l00795"></a>00795     {
<a name="l00796"></a>00796         whatsThisText = <span class="stringliteral">&quot;&lt;qt&gt;&quot;</span> + i18n(<span class="stringliteral">&quot;This is the list of files to open. More than &quot;</span>
<a name="l00797"></a>00797                              <span class="stringliteral">&quot;one file can be specified by listing several &quot;</span>
<a name="l00798"></a>00798                              <span class="stringliteral">&quot;files, separated by spaces.&quot;</span>) +
<a name="l00799"></a>00799                               i18n (autocompletionWhatsThisText);
<a name="l00800"></a>00800     }
<a name="l00801"></a>00801     <span class="keywordflow">else</span>
<a name="l00802"></a>00802     {
<a name="l00803"></a>00803         whatsThisText = <span class="stringliteral">&quot;&lt;qt&gt;&quot;</span> + i18n(<span class="stringliteral">&quot;This is the name of the file to open.&quot;</span>) +
<a name="l00804"></a>00804                              i18n (autocompletionWhatsThisText);
<a name="l00805"></a>00805     }
<a name="l00806"></a>00806 
<a name="l00807"></a>00807     <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>(d-&gt;locationLabel, whatsThisText);
<a name="l00808"></a>00808     <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>(locationEdit, whatsThisText);
<a name="l00809"></a>00809 }
<a name="l00810"></a>00810 
<a name="l00811"></a><a class="code" href="classKFileDialog.html#a74beed198a9f3cbb5126b73d00c44a50">00811</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a74beed198a9f3cbb5126b73d00c44a50" title="Perform basic initialization tasks.">KFileDialog::init</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter, <a class="codeRef" href="qwidget.html">QWidget</a>* widget)
<a name="l00812"></a>00812 {
<a name="l00813"></a>00813     initStatic();
<a name="l00814"></a>00814     d = <span class="keyword">new</span> KFileDialogPrivate();
<a name="l00815"></a>00815 
<a name="l00816"></a>00816     d-&gt;boxLayout = 0;
<a name="l00817"></a>00817     d-&gt;keepLocation = <span class="keyword">false</span>;
<a name="l00818"></a>00818     d-&gt;operationMode = Opening;
<a name="l00819"></a>00819     d-&gt;bookmarkHandler = 0;
<a name="l00820"></a>00820     d-&gt;hasDefaultFilter = <span class="keyword">false</span>;
<a name="l00821"></a>00821     d-&gt;hasView = <span class="keyword">false</span>;
<a name="l00822"></a>00822     d-&gt;mainWidget = <span class="keyword">new</span> <a class="codeRef" href="qwidget.html">QWidget</a>( <span class="keyword">this</span>, <span class="stringliteral">&quot;KFileDialog::mainWidget&quot;</span>);
<a name="l00823"></a>00823     setMainWidget( d-&gt;mainWidget );
<a name="l00824"></a>00824     d-&gt;okButton = <span class="keyword">new</span> KPushButton( KStdGuiItem::ok(), d-&gt;mainWidget );
<a name="l00825"></a>00825     d-&gt;okButton-&gt;setDefault( <span class="keyword">true</span> );
<a name="l00826"></a>00826     d-&gt;cancelButton = <span class="keyword">new</span> KPushButton(KStdGuiItem::cancel(), d-&gt;mainWidget);
<a name="l00827"></a>00827     connect( d-&gt;okButton, SIGNAL( clicked() ), SLOT( slotOk() ));
<a name="l00828"></a>00828     connect( d-&gt;cancelButton, SIGNAL( clicked() ), SLOT( slotCancel() ));
<a name="l00829"></a>00829     d-&gt;customWidget = widget;
<a name="l00830"></a>00830     d-&gt;autoSelectExtCheckBox = 0; <span class="comment">// delayed loading</span>
<a name="l00831"></a>00831     d-&gt;autoSelectExtChecked = <span class="keyword">false</span>;
<a name="l00832"></a>00832     d-&gt;urlBar = 0; <span class="comment">// delayed loading</span>
<a name="l00833"></a>00833 
<a name="l00834"></a>00834     QtMsgHandler oldHandler = qInstallMsgHandler( silenceQToolBar );
<a name="l00835"></a>00835     toolbar = <span class="keyword">new</span> KToolBar( d-&gt;mainWidget, <span class="stringliteral">&quot;KFileDialog::toolbar&quot;</span>, <span class="keyword">true</span>);
<a name="l00836"></a>00836     toolbar-&gt;setFlat(<span class="keyword">true</span>);
<a name="l00837"></a>00837     qInstallMsgHandler( oldHandler );
<a name="l00838"></a>00838 
<a name="l00839"></a>00839     d-&gt;pathCombo = <span class="keyword">new</span> <a class="code" href="classKURLComboBox.html" title="This combobox shows a number of recent URLs/directories, as well as some default directories.">KURLComboBox</a>( KURLComboBox::Directories, <span class="keyword">true</span>,
<a name="l00840"></a>00840                                      toolbar, <span class="stringliteral">&quot;path combo&quot;</span> );
<a name="l00841"></a>00841     <a class="codeRef" href="qtooltip.html#add">QToolTip::add</a>( d-&gt;pathCombo, i18n(<span class="stringliteral">&quot;Current location&quot;</span>) );
<a name="l00842"></a>00842     <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>( d-&gt;pathCombo, <span class="stringliteral">&quot;&lt;qt&gt;&quot;</span> + i18n(<span class="stringliteral">&quot;This is the currently listed location. &quot;</span>
<a name="l00843"></a>00843                                                  <span class="stringliteral">&quot;The drop-down list also lists commonly used locations. &quot;</span>
<a name="l00844"></a>00844                                                  <span class="stringliteral">&quot;This includes standard locations, such as your home folder, as well as &quot;</span>
<a name="l00845"></a>00845                                                  <span class="stringliteral">&quot;locations that have been visited recently.&quot;</span>) + i18n (autocompletionWhatsThisText));
<a name="l00846"></a>00846 
<a name="l00847"></a>00847     KURL u;
<a name="l00848"></a>00848     u.setPath( <a class="codeRef" href="qdir.html#rootDirPath">QDir::rootDirPath</a>() );
<a name="l00849"></a>00849     <a class="codeRef" href="qstring.html">QString</a> text = i18n(<span class="stringliteral">&quot;Root Folder: %1&quot;</span>).<a class="codeRef" href="qstring.html#arg">arg</a>( u.path() );
<a name="l00850"></a>00850     d-&gt;pathCombo-&gt;addDefaultURL( u,
<a name="l00851"></a>00851                                  KMimeType::pixmapForURL( u, 0, KIcon::Small ),
<a name="l00852"></a>00852                                  text );
<a name="l00853"></a>00853 
<a name="l00854"></a>00854     u.setPath( <a class="codeRef" href="qdir.html#homeDirPath">QDir::homeDirPath</a>() );
<a name="l00855"></a>00855     text = i18n(<span class="stringliteral">&quot;Home Folder: %1&quot;</span>).<a class="codeRef" href="qstring.html#arg">arg</a>( u.path( +1 ) );
<a name="l00856"></a>00856     d-&gt;pathCombo-&gt;addDefaultURL( u, KMimeType::pixmapForURL( u, 0, KIcon::Small ),
<a name="l00857"></a>00857                                  text );
<a name="l00858"></a>00858 
<a name="l00859"></a>00859     KURL docPath;
<a name="l00860"></a>00860     docPath.setPath( KGlobalSettings::documentPath() );
<a name="l00861"></a>00861     <span class="keywordflow">if</span> ( (u.path(+1) != docPath.path(+1)) &amp;&amp;
<a name="l00862"></a>00862          <a class="codeRef" href="qdir.html">QDir</a>(docPath.path(+1)).exists() )
<a name="l00863"></a>00863     {
<a name="l00864"></a>00864         text = i18n(<span class="stringliteral">&quot;Documents: %1&quot;</span>).<a class="codeRef" href="qstring.html#arg">arg</a>( docPath.path( +1 ) );
<a name="l00865"></a>00865         d-&gt;pathCombo-&gt;addDefaultURL( docPath,
<a name="l00866"></a>00866                                      KMimeType::pixmapForURL( docPath, 0, KIcon::Small ),
<a name="l00867"></a>00867                                      text );
<a name="l00868"></a>00868     }
<a name="l00869"></a>00869 
<a name="l00870"></a>00870     u.setPath( KGlobalSettings::desktopPath() );
<a name="l00871"></a>00871     text = i18n(<span class="stringliteral">&quot;Desktop: %1&quot;</span>).<a class="codeRef" href="qstring.html#arg">arg</a>( u.path( +1 ) );
<a name="l00872"></a>00872     d-&gt;pathCombo-&gt;addDefaultURL( u,
<a name="l00873"></a>00873                                  KMimeType::pixmapForURL( u, 0, KIcon::Small ),
<a name="l00874"></a>00874                                  text );
<a name="l00875"></a>00875 
<a name="l00876"></a>00876     d-&gt;url = <a class="code" href="classKFileDialog.html#aaa9cdbff18994ed30a8b3ebc2e7e5012" title="This method implements the logic to determine the user&#39;s default directory to be listed.">getStartURL</a>( startDir, d-&gt;fileClass );
<a name="l00877"></a>00877     d-&gt;selection = d-&gt;url.url();
<a name="l00878"></a>00878 
<a name="l00879"></a>00879     <span class="comment">// If local, check it exists. If not, go up until it exists.</span>
<a name="l00880"></a>00880     <span class="keywordflow">if</span> ( d-&gt;url.isLocalFile() )
<a name="l00881"></a>00881     {
<a name="l00882"></a>00882         <span class="keywordflow">if</span> ( !<a class="codeRef" href="qfile.html#exists-2">QFile::exists</a>( d-&gt;url.path() ) )
<a name="l00883"></a>00883         {
<a name="l00884"></a>00884             d-&gt;url = d-&gt;url.upURL();
<a name="l00885"></a>00885             <a class="codeRef" href="qdir.html">QDir</a> dir( d-&gt;url.path() );
<a name="l00886"></a>00886             <span class="keywordflow">while</span> ( !dir.exists() )
<a name="l00887"></a>00887             {
<a name="l00888"></a>00888                 d-&gt;url = d-&gt;url.upURL();
<a name="l00889"></a>00889                 dir.setPath( d-&gt;url.path() );
<a name="l00890"></a>00890             }
<a name="l00891"></a>00891         }
<a name="l00892"></a>00892     }
<a name="l00893"></a>00893 
<a name="l00894"></a>00894     ops = <span class="keyword">new</span> <a class="code" href="classKDirOperator.html" title="This widget works as a network transparent filebrowser.">KDirOperator</a>(d-&gt;url, d-&gt;mainWidget, <span class="stringliteral">&quot;KFileDialog::ops&quot;</span>);
<a name="l00895"></a>00895     ops-&gt;<a class="code" href="classKDirOperator.html#ab882293c96429d213ecb04c065498202" title="This is a KFileDialog specific hack: we want to select directories with single click, but not files.">setOnlyDoubleClickSelectsFiles</a>( <span class="keyword">true</span> );
<a name="l00896"></a>00896     connect(ops, SIGNAL(urlEntered(<span class="keyword">const</span> KURL&amp;)),
<a name="l00897"></a>00897             SLOT(urlEntered(<span class="keyword">const</span> KURL&amp;)));
<a name="l00898"></a>00898     connect(ops, SIGNAL(<a class="code" href="classKFileDialog.html#ab196d6d2272bb83187bfea578cd8bc8a" title="Emitted when the user highlights a file.">fileHighlighted</a>(<span class="keyword">const</span> KFileItem *)),
<a name="l00899"></a>00899             SLOT(<a class="code" href="classKFileDialog.html#ab196d6d2272bb83187bfea578cd8bc8a" title="Emitted when the user highlights a file.">fileHighlighted</a>(<span class="keyword">const</span> KFileItem *)));
<a name="l00900"></a>00900     connect(ops, SIGNAL(<a class="code" href="classKFileDialog.html#aca1ee0834aa99e24008857518720f746" title="Emitted when the user selects a file.">fileSelected</a>(<span class="keyword">const</span> KFileItem *)),
<a name="l00901"></a>00901             SLOT(<a class="code" href="classKFileDialog.html#aca1ee0834aa99e24008857518720f746" title="Emitted when the user selects a file.">fileSelected</a>(<span class="keyword">const</span> KFileItem *)));
<a name="l00902"></a>00902     connect(ops, SIGNAL(finishedLoading()),
<a name="l00903"></a>00903             SLOT(slotLoadingFinished()));
<a name="l00904"></a>00904 
<a name="l00905"></a>00905     ops-&gt;<a class="code" href="classKDirOperator.html#a69fc7280ca29958d499cc7a71a99fc4d" title="Sets up the action menu.">setupMenu</a>(KDirOperator::SortActions |
<a name="l00906"></a>00906                    KDirOperator::FileActions |
<a name="l00907"></a>00907                    KDirOperator::ViewActions);
<a name="l00908"></a>00908     KActionCollection *coll = ops-&gt;<a class="code" href="classKDirOperator.html#a87d007bd417e8ef15cf4596c43020be4" title="an accessor to a collection of all available Actions.">actionCollection</a>();
<a name="l00909"></a>00909 
<a name="l00910"></a>00910     <span class="comment">// plug nav items into the toolbar</span>
<a name="l00911"></a>00911     coll-&gt;action( <span class="stringliteral">&quot;up&quot;</span> )-&gt;plug( toolbar );
<a name="l00912"></a>00912     coll-&gt;action( <span class="stringliteral">&quot;up&quot;</span> )-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;&lt;qt&gt;Click this button to enter the parent folder.&lt;p&gt;&quot;</span>
<a name="l00913"></a>00913                                             <span class="stringliteral">&quot;For instance, if the current location is file:/home/%1 clicking this &quot;</span>
<a name="l00914"></a>00914                                             <span class="stringliteral">&quot;button will take you to file:/home.&lt;/qt&gt;&quot;</span>).arg( KUser().loginName() ));
<a name="l00915"></a>00915     coll-&gt;action( <span class="stringliteral">&quot;back&quot;</span> )-&gt;plug( toolbar );
<a name="l00916"></a>00916     coll-&gt;action( <span class="stringliteral">&quot;back&quot;</span> )-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;Click this button to move backwards one step in the browsing history.&quot;</span>));
<a name="l00917"></a>00917     coll-&gt;action( <span class="stringliteral">&quot;forward&quot;</span> )-&gt;plug( toolbar );
<a name="l00918"></a>00918     coll-&gt;action( <span class="stringliteral">&quot;forward&quot;</span> )-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;Click this button to move forward one step in the browsing history.&quot;</span>));
<a name="l00919"></a>00919     coll-&gt;action( <span class="stringliteral">&quot;reload&quot;</span> )-&gt;plug( toolbar );
<a name="l00920"></a>00920     coll-&gt;action( <span class="stringliteral">&quot;reload&quot;</span> )-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;Click this button to reload the contents of the current location.&quot;</span>));
<a name="l00921"></a>00921     coll-&gt;action( <span class="stringliteral">&quot;mkdir&quot;</span> )-&gt;setShortcut(Key_F10);
<a name="l00922"></a>00922     coll-&gt;action( <span class="stringliteral">&quot;mkdir&quot;</span> )-&gt;plug( toolbar );
<a name="l00923"></a>00923     coll-&gt;action( <span class="stringliteral">&quot;mkdir&quot;</span> )-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;Click this button to create a new folder.&quot;</span>));
<a name="l00924"></a>00924 
<a name="l00925"></a>00925     KToggleAction *showSidebarAction =
<a name="l00926"></a>00926         <span class="keyword">new</span> KToggleAction(i18n(<span class="stringliteral">&quot;Show Quick Access Navigation Panel&quot;</span>), Key_F9, coll,<span class="stringliteral">&quot;toggleSpeedbar&quot;</span>);
<a name="l00927"></a>00927     showSidebarAction-&gt;setCheckedState(i18n(<span class="stringliteral">&quot;Hide Quick Access Navigation Panel&quot;</span>));
<a name="l00928"></a>00928     connect( showSidebarAction, SIGNAL( toggled( <span class="keywordtype">bool</span> ) ),
<a name="l00929"></a>00929              SLOT( <a class="code" href="classKFileDialog.html#a15823cbc52705429d31c892647a5958f">toggleSpeedbar</a>( <span class="keywordtype">bool</span> )) );
<a name="l00930"></a>00930 
<a name="l00931"></a>00931     KToggleAction *showBookmarksAction =
<a name="l00932"></a>00932             <span class="keyword">new</span> KToggleAction(i18n(<span class="stringliteral">&quot;Show Bookmarks&quot;</span>), 0, coll, <span class="stringliteral">&quot;toggleBookmarks&quot;</span>);
<a name="l00933"></a>00933     showBookmarksAction-&gt;setCheckedState(i18n(<span class="stringliteral">&quot;Hide Bookmarks&quot;</span>));
<a name="l00934"></a>00934     connect( showBookmarksAction, SIGNAL( toggled( <span class="keywordtype">bool</span> ) ),
<a name="l00935"></a>00935              SLOT( <a class="code" href="classKFileDialog.html#af58b2304c13a620b2db59076da66da8b">toggleBookmarks</a>( <span class="keywordtype">bool</span> )) );
<a name="l00936"></a>00936 
<a name="l00937"></a>00937     KActionMenu *menu = <span class="keyword">new</span> KActionMenu( i18n(<span class="stringliteral">&quot;Configure&quot;</span>), <span class="stringliteral">&quot;configure&quot;</span>, <span class="keyword">this</span>, <span class="stringliteral">&quot;extra menu&quot;</span> );
<a name="l00938"></a>00938     menu-&gt;setWhatsThis(i18n(<span class="stringliteral">&quot;&lt;qt&gt;This is the configuration menu for the file dialog. &quot;</span>
<a name="l00939"></a>00939                             <span class="stringliteral">&quot;Various options can be accessed from this menu including: &lt;ul&gt;&quot;</span>
<a name="l00940"></a>00940                             <span class="stringliteral">&quot;&lt;li&gt;how files are sorted in the list&lt;/li&gt;&quot;</span>
<a name="l00941"></a>00941                             <span class="stringliteral">&quot;&lt;li&gt;types of view, including icon and list&lt;/li&gt;&quot;</span>
<a name="l00942"></a>00942                             <span class="stringliteral">&quot;&lt;li&gt;showing of hidden files&lt;/li&gt;&quot;</span>
<a name="l00943"></a>00943                             <span class="stringliteral">&quot;&lt;li&gt;the Quick Access navigation panel&lt;/li&gt;&quot;</span>
<a name="l00944"></a>00944                             <span class="stringliteral">&quot;&lt;li&gt;file previews&lt;/li&gt;&quot;</span>
<a name="l00945"></a>00945                             <span class="stringliteral">&quot;&lt;li&gt;separating folders from files&lt;/li&gt;&lt;/ul&gt;&lt;/qt&gt;&quot;</span>));
<a name="l00946"></a>00946     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;sorting menu&quot;</span> ));
<a name="l00947"></a>00947     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;separator&quot;</span> ));
<a name="l00948"></a>00948     coll-&gt;action( <span class="stringliteral">&quot;short view&quot;</span> )-&gt;setShortcut(Key_F6);
<a name="l00949"></a>00949     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;short view&quot;</span> ));
<a name="l00950"></a>00950     coll-&gt;action( <span class="stringliteral">&quot;detailed view&quot;</span> )-&gt;setShortcut(Key_F7);
<a name="l00951"></a>00951     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;detailed view&quot;</span> ));
<a name="l00952"></a>00952     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;separator&quot;</span> ));
<a name="l00953"></a>00953     coll-&gt;action( <span class="stringliteral">&quot;show hidden&quot;</span> )-&gt;setShortcut(Key_F8);
<a name="l00954"></a>00954     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;show hidden&quot;</span> ));
<a name="l00955"></a>00955     menu-&gt;insert( showSidebarAction );
<a name="l00956"></a>00956     menu-&gt;insert( showBookmarksAction );
<a name="l00957"></a>00957     coll-&gt;action( <span class="stringliteral">&quot;preview&quot;</span> )-&gt;setShortcut(Key_F11);
<a name="l00958"></a>00958     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;preview&quot;</span> ));
<a name="l00959"></a>00959     coll-&gt;action( <span class="stringliteral">&quot;separate dirs&quot;</span> )-&gt;setShortcut(Key_F12);
<a name="l00960"></a>00960     menu-&gt;insert( coll-&gt;action( <span class="stringliteral">&quot;separate dirs&quot;</span> ));
<a name="l00961"></a>00961 
<a name="l00962"></a>00962     menu-&gt;setDelayed( <span class="keyword">false</span> );
<a name="l00963"></a>00963     connect( menu-&gt;popupMenu(), SIGNAL( aboutToShow() ),
<a name="l00964"></a>00964              ops, SLOT( updateSelectionDependentActions() ));
<a name="l00965"></a>00965     menu-&gt;plug( toolbar );
<a name="l00966"></a>00966 
<a name="l00967"></a>00967     <span class="comment">//Insert a separator.</span>
<a name="l00968"></a>00968     KToolBarSeparator* spacerWidget = <span class="keyword">new</span> KToolBarSeparator(Horizontal, <span class="keyword">false</span> <span class="comment">/*no line*/</span>,
<a name="l00969"></a>00969                                                             toolbar);
<a name="l00970"></a>00970     d-&gt;m_pathComboIndex = toolbar-&gt;insertWidget(-1, -1, spacerWidget);
<a name="l00971"></a>00971     toolbar-&gt;insertWidget(PATH_COMBO, 0, d-&gt;pathCombo);
<a name="l00972"></a>00972 
<a name="l00973"></a>00973 
<a name="l00974"></a>00974     toolbar-&gt;setItemAutoSized (PATH_COMBO);
<a name="l00975"></a>00975     toolbar-&gt;setIconText(KToolBar::IconOnly);
<a name="l00976"></a>00976     toolbar-&gt;setBarPos(KToolBar::Top);
<a name="l00977"></a>00977     toolbar-&gt;setMovingEnabled(<span class="keyword">false</span>);
<a name="l00978"></a>00978     toolbar-&gt;adjustSize();
<a name="l00979"></a>00979 
<a name="l00980"></a>00980     KURLCompletion *pathCompletionObj = <span class="keyword">new</span> KURLCompletion( KURLCompletion::DirCompletion );
<a name="l00981"></a>00981     d-&gt;pathCombo-&gt;setCompletionObject( pathCompletionObj );
<a name="l00982"></a>00982     d-&gt;pathCombo-&gt;setAutoDeleteCompletionObject( <span class="keyword">true</span> );
<a name="l00983"></a>00983 
<a name="l00984"></a>00984     connect( d-&gt;pathCombo, SIGNAL( urlActivated( <span class="keyword">const</span> KURL&amp;  )),
<a name="l00985"></a>00985              <span class="keyword">this</span>,  SLOT( enterURL( <span class="keyword">const</span> KURL&amp; ) ));
<a name="l00986"></a>00986     connect( d-&gt;pathCombo, SIGNAL( returnPressed( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp;  )),
<a name="l00987"></a>00987              <span class="keyword">this</span>,  SLOT( enterURL( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ));
<a name="l00988"></a>00988 
<a name="l00989"></a>00989     <a class="codeRef" href="qstring.html">QString</a> whatsThisText;
<a name="l00990"></a>00990 
<a name="l00991"></a>00991     <span class="comment">// the Location label/edit</span>
<a name="l00992"></a>00992     d-&gt;locationLabel = <span class="keyword">new</span> <a class="codeRef" href="qlabel.html">QLabel</a>(i18n(<span class="stringliteral">&quot;&amp;Location:&quot;</span>), d-&gt;mainWidget);
<a name="l00993"></a>00993     locationEdit = <span class="keyword">new</span> <a class="code" href="classKURLComboBox.html" title="This combobox shows a number of recent URLs/directories, as well as some default directories.">KURLComboBox</a>(KURLComboBox::Files, <span class="keyword">true</span>,
<a name="l00994"></a>00994                                     d-&gt;mainWidget, <span class="stringliteral">&quot;LocationEdit&quot;</span>);
<a name="l00995"></a>00995     connect( locationEdit, SIGNAL( textChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ),
<a name="l00996"></a>00996              SLOT( slotLocationChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )) );
<a name="l00997"></a>00997 
<a name="l00998"></a>00998     updateLocationWhatsThis ();
<a name="l00999"></a>00999     d-&gt;locationLabel-&gt;setBuddy(locationEdit);
<a name="l01000"></a>01000 
<a name="l01001"></a>01001     locationEdit-&gt;setFocus();
<a name="l01002"></a>01002     KURLCompletion *fileCompletionObj = <span class="keyword">new</span> KURLCompletion( KURLCompletion::FileCompletion );
<a name="l01003"></a>01003     <a class="codeRef" href="qstring.html">QString</a> dir = d-&gt;url.url(+1);
<a name="l01004"></a>01004     pathCompletionObj-&gt;setDir( dir );
<a name="l01005"></a>01005     fileCompletionObj-&gt;setDir( dir );
<a name="l01006"></a>01006     locationEdit-&gt;setCompletionObject( fileCompletionObj );
<a name="l01007"></a>01007     locationEdit-&gt;setAutoDeleteCompletionObject( <span class="keyword">true</span> );
<a name="l01008"></a>01008     connect( fileCompletionObj, SIGNAL( match( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ),
<a name="l01009"></a>01009              SLOT( fileCompletion( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )) );
<a name="l01010"></a>01010 
<a name="l01011"></a>01011     connect( locationEdit, SIGNAL( returnPressed() ),
<a name="l01012"></a>01012              <span class="keyword">this</span>, SLOT( slotOk()));
<a name="l01013"></a>01013     connect(locationEdit, SIGNAL( activated( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp;  )),
<a name="l01014"></a>01014             <span class="keyword">this</span>,  SLOT( locationActivated( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) ));
<a name="l01015"></a>01015 
<a name="l01016"></a>01016     <span class="comment">// the Filter label/edit</span>
<a name="l01017"></a>01017     whatsThisText = i18n(<span class="stringliteral">&quot;&lt;qt&gt;This is the filter to apply to the file list. &quot;</span>
<a name="l01018"></a>01018                          <span class="stringliteral">&quot;File names that do not match the filter will not be shown.&lt;p&gt;&quot;</span>
<a name="l01019"></a>01019                          <span class="stringliteral">&quot;You may select from one of the preset filters in the &quot;</span>
<a name="l01020"></a>01020                          <span class="stringliteral">&quot;drop down menu, or you may enter a custom filter &quot;</span>
<a name="l01021"></a>01021                          <span class="stringliteral">&quot;directly into the text area.&lt;p&gt;&quot;</span>
<a name="l01022"></a>01022                          <span class="stringliteral">&quot;Wildcards such as * and ? are allowed.&lt;/qt&gt;&quot;</span>);
<a name="l01023"></a>01023     d-&gt;filterLabel = <span class="keyword">new</span> <a class="codeRef" href="qlabel.html">QLabel</a>(i18n(<span class="stringliteral">&quot;&amp;Filter:&quot;</span>), d-&gt;mainWidget);
<a name="l01024"></a>01024     <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>(d-&gt;filterLabel, whatsThisText);
<a name="l01025"></a>01025     filterWidget = <span class="keyword">new</span> KFileFilterCombo(d-&gt;mainWidget,
<a name="l01026"></a>01026                                         <span class="stringliteral">&quot;KFileDialog::filterwidget&quot;</span>);
<a name="l01027"></a>01027     <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>(filterWidget, whatsThisText);
<a name="l01028"></a>01028     <a class="code" href="classKFileDialog.html#a715e45099822135eeab4fd3ba828bc4a" title="Sets the filter to be used to filter.">setFilter</a>(filter);
<a name="l01029"></a>01029     d-&gt;filterLabel-&gt;setBuddy(filterWidget);
<a name="l01030"></a>01030     connect(filterWidget, SIGNAL(<a class="code" href="classKFileDialog.html#a272da39f7c4b7b00f605a0cc75ee7ed4" title="Emitted when the filter changed, i.e.">filterChanged</a>()), SLOT(slotFilterChanged()));
<a name="l01031"></a>01031 
<a name="l01032"></a>01032     <span class="comment">// the Automatically Select Extension checkbox</span>
<a name="l01033"></a>01033     <span class="comment">// (the text, visibility etc. is set in updateAutoSelectExtension(), which is called by readConfig())</span>
<a name="l01034"></a>01034     d-&gt;autoSelectExtCheckBox = <span class="keyword">new</span> <a class="codeRef" href="qcheckbox.html">QCheckBox</a> (d-&gt;mainWidget);
<a name="l01035"></a>01035     connect(d-&gt;autoSelectExtCheckBox, SIGNAL(clicked()), SLOT(slotAutoSelectExtClicked()));
<a name="l01036"></a>01036 
<a name="l01037"></a>01037     <a class="code" href="classKFileDialog.html#a4c6ef34bb1918616957a4fae9d1faf34" title="rebuild geometry management.">initGUI</a>(); <span class="comment">// activate GM</span>
<a name="l01038"></a>01038 
<a name="l01039"></a>01039     KConfig* config = KGlobal::config();
<a name="l01040"></a>01040     <a class="code" href="classKFileDialog.html#a33ba2578d6d0d87636dc28f860380f14" title="Reads the recent used files and inserts them into the location combobox.">readRecentFiles</a>( config );
<a name="l01041"></a>01041 
<a name="l01042"></a>01042     adjustSize();
<a name="l01043"></a>01043 
<a name="l01044"></a>01044     ops-&gt;<a class="code" href="classKDirOperator.html#a953b2dcf65fb8c564f460c9c7ab51509" title="Sets the config object and the to be used group in KDirOperator.">setViewConfig</a>( config, ConfigGroup );
<a name="l01045"></a>01045     <a class="code" href="classKFileDialog.html#aa6c93d30d701c6723b4151f7c74263e2" title="Reads configuration and applies it (size, recent directories, ...)">readConfig</a>( config, ConfigGroup );
<a name="l01046"></a>01046     <a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">setSelection</a>(d-&gt;selection);
<a name="l01047"></a>01047 }
<a name="l01048"></a>01048 
<a name="l01049"></a>01049 <span class="keywordtype">void</span> KFileDialog::initSpeedbar()
<a name="l01050"></a>01050 {
<a name="l01051"></a>01051     d-&gt;urlBar = <span class="keyword">new</span> KFileSpeedBar( d-&gt;mainWidget, <span class="stringliteral">&quot;url bar&quot;</span> );
<a name="l01052"></a>01052     connect( d-&gt;urlBar, SIGNAL( activated( <span class="keyword">const</span> KURL&amp; )),
<a name="l01053"></a>01053              SLOT( enterURL( <span class="keyword">const</span> KURL&amp; )) );
<a name="l01054"></a>01054 
<a name="l01055"></a>01055     <span class="comment">// need to set the current url of the urlbar manually (not via urlEntered()</span>
<a name="l01056"></a>01056     <span class="comment">// here, because the initial url of KDirOperator might be the same as the</span>
<a name="l01057"></a>01057     <span class="comment">// one that will be set later (and then urlEntered() won&#39;t be emitted).</span>
<a name="l01058"></a>01058     <span class="comment">// ### REMOVE THIS when KDirOperator&#39;s initial URL (in the c&#39;tor) is gone.</span>
<a name="l01059"></a>01059     d-&gt;urlBar-&gt;setCurrentItem( d-&gt;url );
<a name="l01060"></a>01060 
<a name="l01061"></a>01061     d-&gt;urlBarLayout-&gt;insertWidget( 0, d-&gt;urlBar );
<a name="l01062"></a>01062 }
<a name="l01063"></a>01063 
<a name="l01064"></a><a class="code" href="classKFileDialog.html#a4c6ef34bb1918616957a4fae9d1faf34">01064</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a4c6ef34bb1918616957a4fae9d1faf34" title="rebuild geometry management.">KFileDialog::initGUI</a>()
<a name="l01065"></a>01065 {
<a name="l01066"></a>01066     <span class="keyword">delete</span> d-&gt;boxLayout; <span class="comment">// deletes all sub layouts</span>
<a name="l01067"></a>01067 
<a name="l01068"></a>01068     d-&gt;boxLayout = <span class="keyword">new</span> <a class="codeRef" href="qvboxlayout.html">QVBoxLayout</a>( d-&gt;mainWidget, 0, KDialog::spacingHint());
<a name="l01069"></a>01069     d-&gt;boxLayout-&gt;addWidget(toolbar, AlignTop);
<a name="l01070"></a>01070 
<a name="l01071"></a>01071     d-&gt;urlBarLayout = <span class="keyword">new</span> <a class="codeRef" href="qhboxlayout.html">QHBoxLayout</a>( d-&gt;boxLayout ); <span class="comment">// needed for the urlBar that may appear</span>
<a name="l01072"></a>01072     <a class="codeRef" href="qvboxlayout.html">QVBoxLayout</a> *vbox = <span class="keyword">new</span> <a class="codeRef" href="qvboxlayout.html">QVBoxLayout</a>( d-&gt;urlBarLayout );
<a name="l01073"></a>01073 
<a name="l01074"></a>01074     vbox-&gt;addWidget(ops, 4);
<a name="l01075"></a>01075     vbox-&gt;addSpacing(3);
<a name="l01076"></a>01076 
<a name="l01077"></a>01077     <a class="codeRef" href="qgridlayout.html">QGridLayout</a>* lafBox= <span class="keyword">new</span> <a class="codeRef" href="qgridlayout.html">QGridLayout</a>(2, 3, KDialog::spacingHint());
<a name="l01078"></a>01078 
<a name="l01079"></a>01079     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(d-&gt;locationLabel, 0, 0, AlignVCenter);
<a name="l01080"></a>01080     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(locationEdit, 0, 1, AlignVCenter);
<a name="l01081"></a>01081     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(d-&gt;okButton, 0, 2, AlignVCenter);
<a name="l01082"></a>01082 
<a name="l01083"></a>01083     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(d-&gt;filterLabel, 1, 0, AlignVCenter);
<a name="l01084"></a>01084     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(filterWidget, 1, 1, AlignVCenter);
<a name="l01085"></a>01085     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#addWidget">addWidget</a>(d-&gt;cancelButton, 1, 2, AlignVCenter);
<a name="l01086"></a>01086 
<a name="l01087"></a>01087     lafBox-&gt;<a class="codeRef" href="qgridlayout.html#setColStretch">setColStretch</a>(1, 4);
<a name="l01088"></a>01088 
<a name="l01089"></a>01089     vbox-&gt;addLayout(lafBox, 0);
<a name="l01090"></a>01090     vbox-&gt;addSpacing(3);
<a name="l01091"></a>01091 
<a name="l01092"></a>01092     <span class="comment">// add the Automatically Select Extension checkbox</span>
<a name="l01093"></a>01093     vbox-&gt;addWidget (d-&gt;autoSelectExtCheckBox);
<a name="l01094"></a>01094     vbox-&gt;addSpacing (3);
<a name="l01095"></a>01095 
<a name="l01096"></a>01096     setTabOrder(ops, d-&gt;autoSelectExtCheckBox);
<a name="l01097"></a>01097     setTabOrder (d-&gt;autoSelectExtCheckBox, locationEdit);
<a name="l01098"></a>01098     setTabOrder(locationEdit, filterWidget);
<a name="l01099"></a>01099     setTabOrder(filterWidget, d-&gt;okButton);
<a name="l01100"></a>01100     setTabOrder(d-&gt;okButton, d-&gt;cancelButton);
<a name="l01101"></a>01101     setTabOrder(d-&gt;cancelButton, d-&gt;pathCombo);
<a name="l01102"></a>01102     setTabOrder(d-&gt;pathCombo, ops);
<a name="l01103"></a>01103 
<a name="l01104"></a>01104     <span class="comment">// If a custom widget was specified...</span>
<a name="l01105"></a>01105     <span class="keywordflow">if</span> ( d-&gt;customWidget != 0 )
<a name="l01106"></a>01106     {
<a name="l01107"></a>01107         <span class="comment">// ...add it to the dialog, below the filter list box.</span>
<a name="l01108"></a>01108 
<a name="l01109"></a>01109         <span class="comment">// Change the parent so that this widget is a child of the main widget</span>
<a name="l01110"></a>01110         d-&gt;customWidget-&gt;reparent( d-&gt;mainWidget, <a class="codeRef" href="qpoint.html">QPoint</a>() );
<a name="l01111"></a>01111 
<a name="l01112"></a>01112         vbox-&gt;addWidget( d-&gt;customWidget );
<a name="l01113"></a>01113         vbox-&gt;addSpacing(3);
<a name="l01114"></a>01114 
<a name="l01115"></a>01115         <span class="comment">// FIXME: This should adjust the tab orders so that the custom widget</span>
<a name="l01116"></a>01116         <span class="comment">// comes after the Cancel button. The code appears to do this, but the result</span>
<a name="l01117"></a>01117         <span class="comment">// somehow screws up the tab order of the file path combo box. Not a major</span>
<a name="l01118"></a>01118         <span class="comment">// problem, but ideally the tab order with a custom widget should be</span>
<a name="l01119"></a>01119         <span class="comment">// the same as the order without one.</span>
<a name="l01120"></a>01120         setTabOrder(d-&gt;cancelButton, d-&gt;customWidget);
<a name="l01121"></a>01121         setTabOrder(d-&gt;customWidget, d-&gt;pathCombo);
<a name="l01122"></a>01122     }
<a name="l01123"></a>01123     <span class="keywordflow">else</span>
<a name="l01124"></a>01124     {
<a name="l01125"></a>01125         setTabOrder(d-&gt;cancelButton, d-&gt;pathCombo);
<a name="l01126"></a>01126     }
<a name="l01127"></a>01127 
<a name="l01128"></a>01128     setTabOrder(d-&gt;pathCombo, ops);
<a name="l01129"></a>01129 }
<a name="l01130"></a>01130 
<a name="l01131"></a>01131 <span class="keywordtype">void</span> KFileDialog::slotFilterChanged()
<a name="l01132"></a>01132 {
<a name="l01133"></a>01133     <a class="codeRef" href="qstring.html">QString</a> filter = filterWidget-&gt;currentFilter();
<a name="l01134"></a>01134     ops-&gt;<a class="code" href="classKDirOperator.html#a8e0d890a72acd97a0a1b793a7a51a1c5" title="Clears both the namefilter and mimetype filter, so that all files and directories will be shown...">clearFilter</a>();
<a name="l01135"></a>01135 
<a name="l01136"></a>01136     <span class="keywordflow">if</span> ( filter.<a class="codeRef" href="qstring.html#find">find</a>( <span class="charliteral">&#39;/&#39;</span> ) &gt; -1 ) {
<a name="l01137"></a>01137         <a class="codeRef" href="qstringlist.html">QStringList</a> types = <a class="codeRef" href="qstringlist.html#split">QStringList::split</a>( <span class="stringliteral">&quot; &quot;</span>, filter );
<a name="l01138"></a>01138         types.prepend( <span class="stringliteral">&quot;inode/directory&quot;</span> );
<a name="l01139"></a>01139         ops-&gt;<a class="code" href="classKDirOperator.html#a217f9a164c41b2ac713ad04bdb5b7da3" title="Sets a list of mimetypes as filter.">setMimeFilter</a>( types );
<a name="l01140"></a>01140     }
<a name="l01141"></a>01141     <span class="keywordflow">else</span>
<a name="l01142"></a>01142         ops-&gt;<a class="code" href="classKDirOperator.html#a61b7db5e6ee2fe47b87d7973a854e02e" title="Sets a filter like &quot;*.cpp *.h *.o&quot;.">setNameFilter</a>( filter );
<a name="l01143"></a>01143 
<a name="l01144"></a>01144     ops-&gt;<a class="code" href="classKDirOperator.html#aa70811cdce2207a5c3cecb850951f8e3" title="to update the view after changing the settings">updateDir</a>();
<a name="l01145"></a>01145 
<a name="l01146"></a>01146     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l01147"></a>01147 
<a name="l01148"></a>01148     emit <a class="code" href="classKFileDialog.html#a272da39f7c4b7b00f605a0cc75ee7ed4" title="Emitted when the filter changed, i.e.">filterChanged</a>( filter );
<a name="l01149"></a>01149 }
<a name="l01150"></a>01150 
<a name="l01151"></a>01151 
<a name="l01152"></a><a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b">01152</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">KFileDialog::setURL</a>(<span class="keyword">const</span> KURL&amp; url, <span class="keywordtype">bool</span> clearforward)
<a name="l01153"></a>01153 {
<a name="l01154"></a>01154     d-&gt;selection = QString::null;
<a name="l01155"></a>01155     ops-&gt;<a class="code" href="classKDirOperator.html#aec6239b20616531b0dbf2dbaa47a5c20" title="Sets a new url to list.">setURL</a>( url, clearforward);
<a name="l01156"></a>01156 }
<a name="l01157"></a>01157 
<a name="l01158"></a>01158 <span class="comment">// Protected</span>
<a name="l01159"></a>01159 <span class="keywordtype">void</span> KFileDialog::urlEntered(<span class="keyword">const</span> KURL&amp; url)
<a name="l01160"></a>01160 {
<a name="l01161"></a>01161     <a class="codeRef" href="qstring.html">QString</a> filename = locationEdit-&gt;currentText();
<a name="l01162"></a>01162     d-&gt;selection = QString::null;
<a name="l01163"></a>01163 
<a name="l01164"></a>01164     <span class="keywordflow">if</span> ( d-&gt;pathCombo-&gt;count() != 0 ) { <span class="comment">// little hack</span>
<a name="l01165"></a>01165         d-&gt;pathCombo-&gt;setURL( url );
<a name="l01166"></a>01166     }
<a name="l01167"></a>01167 
<a name="l01168"></a>01168     locationEdit-&gt;blockSignals( <span class="keyword">true</span> );
<a name="l01169"></a>01169     locationEdit-&gt;setCurrentItem( 0 );
<a name="l01170"></a>01170     <span class="keywordflow">if</span> ( d-&gt;keepLocation )
<a name="l01171"></a>01171         locationEdit-&gt;setEditText( filename );
<a name="l01172"></a>01172 
<a name="l01173"></a>01173     locationEdit-&gt;blockSignals( <span class="keyword">false</span> );
<a name="l01174"></a>01174 
<a name="l01175"></a>01175     <a class="codeRef" href="qstring.html">QString</a> dir = url.url(+1);
<a name="l01176"></a>01176     <span class="keyword">static_cast&lt;</span>KURLCompletion*<span class="keyword">&gt;</span>( d-&gt;pathCombo-&gt;completionObject() )-&gt;setDir( dir );
<a name="l01177"></a>01177     <span class="keyword">static_cast&lt;</span>KURLCompletion*<span class="keyword">&gt;</span>( locationEdit-&gt;completionObject() )-&gt;setDir( dir );
<a name="l01178"></a>01178 
<a name="l01179"></a>01179     <span class="keywordflow">if</span> ( d-&gt;urlBar )
<a name="l01180"></a>01180         d-&gt;urlBar-&gt;setCurrentItem( url );
<a name="l01181"></a>01181 }
<a name="l01182"></a>01182 
<a name="l01183"></a>01183 <span class="keywordtype">void</span> KFileDialog::locationActivated( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; url )
<a name="l01184"></a>01184 {
<a name="l01185"></a>01185     <span class="comment">// This guard prevents any URL _typed_ by the user from being interpreted</span>
<a name="l01186"></a>01186     <span class="comment">// twice (by returnPressed/slotOk and here, activated/locationActivated)</span>
<a name="l01187"></a>01187     <span class="comment">// after the user presses Enter.  Without this, _both_ setSelection and</span>
<a name="l01188"></a>01188     <span class="comment">// slotOk would &quot;u.addPath( url )&quot; ...so instead we leave it up to just</span>
<a name="l01189"></a>01189     <span class="comment">// slotOk....</span>
<a name="l01190"></a>01190     <span class="keywordflow">if</span> (!locationEdit-&gt;lineEdit()-&gt;edited())
<a name="l01191"></a>01191         <a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">setSelection</a>( url );
<a name="l01192"></a>01192 }
<a name="l01193"></a>01193 
<a name="l01194"></a>01194 <span class="keywordtype">void</span> KFileDialog::enterURL( <span class="keyword">const</span> KURL&amp; url)
<a name="l01195"></a>01195 {
<a name="l01196"></a>01196     <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">setURL</a>( url );
<a name="l01197"></a>01197 }
<a name="l01198"></a>01198 
<a name="l01199"></a>01199 <span class="keywordtype">void</span> KFileDialog::enterURL( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; url )
<a name="l01200"></a>01200 {
<a name="l01201"></a>01201     <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">setURL</a>( KURL::fromPathOrURL( KURLCompletion::replacedPath( url, <span class="keyword">true</span>, <span class="keyword">true</span> )) );
<a name="l01202"></a>01202 }
<a name="l01203"></a>01203 
<a name="l01204"></a><a class="code" href="classKFileDialog.html#af3c825018c58b16e3cfbc31718822edc">01204</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#af3c825018c58b16e3cfbc31718822edc">KFileDialog::toolbarCallback</a>(<span class="keywordtype">int</span>) <span class="comment">// SLOT</span>
<a name="l01205"></a>01205 {
<a name="l01206"></a>01206     <span class="comment">/*</span>
<a name="l01207"></a>01207 <span class="comment">     * yes, nothing uses this anymore.</span>
<a name="l01208"></a>01208 <span class="comment">     * it used to be used to show the configure dialog</span>
<a name="l01209"></a>01209 <span class="comment">     */</span>
<a name="l01210"></a>01210 }
<a name="l01211"></a>01211 
<a name="l01212"></a>01212 
<a name="l01213"></a><a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e">01213</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">KFileDialog::setSelection</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; url)
<a name="l01214"></a>01214 {
<a name="l01215"></a>01215     kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;setSelection &quot;</span> &lt;&lt; url &lt;&lt; endl;
<a name="l01216"></a>01216 
<a name="l01217"></a>01217     <span class="keywordflow">if</span> (url.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>()) {
<a name="l01218"></a>01218         d-&gt;selection = QString::null;
<a name="l01219"></a>01219         <span class="keywordflow">return</span>;
<a name="l01220"></a>01220     }
<a name="l01221"></a>01221 
<a name="l01222"></a>01222     KURL u = <a class="code" href="classKFileDialog.html#ac22fc863a7a20da581a480bd7b9f67eb" title="Returns the absolute version of the URL specified in locationEdit.">getCompleteURL</a>(url);
<a name="l01223"></a>01223     <span class="keywordflow">if</span> (!u.isValid()) { <span class="comment">// if it still is</span>
<a name="l01224"></a>01224         kdWarning() &lt;&lt; url &lt;&lt; <span class="stringliteral">&quot; is not a correct argument for setSelection!&quot;</span> &lt;&lt; endl;
<a name="l01225"></a>01225         <span class="keywordflow">return</span>;
<a name="l01226"></a>01226     }
<a name="l01227"></a>01227 
<a name="l01228"></a>01228     <span class="keywordflow">if</span> (!KProtocolInfo::supportsListing(u)) {
<a name="l01229"></a>01229         locationEdit-&gt;lineEdit()-&gt;setEdited( <span class="keyword">true</span> );
<a name="l01230"></a>01230         <span class="keywordflow">return</span>;
<a name="l01231"></a>01231     }
<a name="l01232"></a>01232 
<a name="l01233"></a>01233     <span class="comment">/* we strip the first / from the path to avoid file://usr which means</span>
<a name="l01234"></a>01234 <span class="comment">     *  / on host usr</span>
<a name="l01235"></a>01235 <span class="comment">     */</span>
<a name="l01236"></a>01236     KFileItem i(KFileItem::Unknown, KFileItem::Unknown, u, <span class="keyword">true</span> );
<a name="l01237"></a>01237     <span class="comment">//    KFileItem i(u.path());</span>
<a name="l01238"></a>01238     <span class="keywordflow">if</span> ( i.isDir() &amp;&amp; u.isLocalFile() &amp;&amp; <a class="codeRef" href="qfile.html#exists-2">QFile::exists</a>( u.path() ) ) {
<a name="l01239"></a>01239         <span class="comment">// trust isDir() only if the file is</span>
<a name="l01240"></a>01240         <span class="comment">// local (we cannot stat non-local urls) and if it exists!</span>
<a name="l01241"></a>01241         <span class="comment">// (as KFileItem does not check if the file exists or not</span>
<a name="l01242"></a>01242         <span class="comment">// -&gt; the statbuffer is undefined -&gt; isDir() is unreliable) (Simon)</span>
<a name="l01243"></a>01243         <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">setURL</a>(u, <span class="keyword">true</span>);
<a name="l01244"></a>01244     }
<a name="l01245"></a>01245     <span class="keywordflow">else</span> {
<a name="l01246"></a>01246         <a class="codeRef" href="qstring.html">QString</a> filename = u.url();
<a name="l01247"></a>01247         <span class="keywordtype">int</span> sep = filename.<a class="codeRef" href="qstring.html#findRev">findRev</a>(<span class="charliteral">&#39;/&#39;</span>);
<a name="l01248"></a>01248         <span class="keywordflow">if</span> (sep &gt;= 0) { <span class="comment">// there is a / in it</span>
<a name="l01249"></a>01249             <span class="keywordflow">if</span> ( KProtocolInfo::supportsListing( u )) {
<a name="l01250"></a>01250                 KURL dir(u);
<a name="l01251"></a>01251                 dir.setQuery( QString::null );
<a name="l01252"></a>01252                 dir.setFileName( QString::null );
<a name="l01253"></a>01253                 <a class="code" href="classKFileDialog.html#a8252bfdbd0f3c9d469cabc434fd2517b" title="Sets the directory to view.">setURL</a>(dir, <span class="keyword">true</span> );
<a name="l01254"></a>01254             }
<a name="l01255"></a>01255 
<a name="l01256"></a>01256             <span class="comment">// filename must be decoded, or &quot;name with space&quot; would become</span>
<a name="l01257"></a>01257             <span class="comment">// &quot;name%20with%20space&quot;, so we use KURL::fileName()</span>
<a name="l01258"></a>01258             filename = u.fileName();
<a name="l01259"></a>01259             kdDebug(kfile_area) &lt;&lt; <span class="stringliteral">&quot;filename &quot;</span> &lt;&lt; filename &lt;&lt; endl;
<a name="l01260"></a>01260             d-&gt;selection = filename;
<a name="l01261"></a>01261             setLocationText( filename );
<a name="l01262"></a>01262 
<a name="l01263"></a>01263             <span class="comment">// tell the line edit that it has been edited</span>
<a name="l01264"></a>01264             <span class="comment">// otherwise we won&#39;t know this was set by the user</span>
<a name="l01265"></a>01265             <span class="comment">// and it will be ignored if there has been an</span>
<a name="l01266"></a>01266             <span class="comment">// auto completion. this caused bugs where automcompletion</span>
<a name="l01267"></a>01267             <span class="comment">// would start, the user would pick something from the</span>
<a name="l01268"></a>01268             <span class="comment">// history and then hit Ok only to get the autocompleted</span>
<a name="l01269"></a>01269             <span class="comment">// selection. OOOPS.</span>
<a name="l01270"></a>01270             locationEdit-&gt;lineEdit()-&gt;setEdited( <span class="keyword">true</span> );
<a name="l01271"></a>01271         }
<a name="l01272"></a>01272 
<a name="l01273"></a>01273         d-&gt;url = ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l01274"></a>01274         d-&gt;url.addPath(filename);
<a name="l01275"></a>01275     }
<a name="l01276"></a>01276 }
<a name="l01277"></a>01277 
<a name="l01278"></a>01278 <span class="keywordtype">void</span> KFileDialog::slotLoadingFinished()
<a name="l01279"></a>01279 {
<a name="l01280"></a>01280     <span class="keywordflow">if</span> ( !d-&gt;selection.isNull() )
<a name="l01281"></a>01281         ops-&gt;<a class="code" href="classKDirOperator.html#a11e48340d7c6e5ae770f50d8d83dc598" title="Clears the current selection and attempts to set filename the current file.">setCurrentItem</a>( d-&gt;selection );
<a name="l01282"></a>01282 }
<a name="l01283"></a>01283 
<a name="l01284"></a>01284 <span class="comment">// ### remove in KDE4</span>
<a name="l01285"></a><a class="code" href="classKFileDialog.html#ae1e453daa056c8fdbcba8284427b29c1">01285</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ae1e453daa056c8fdbcba8284427b29c1">KFileDialog::pathComboChanged</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )
<a name="l01286"></a>01286 {
<a name="l01287"></a>01287 }
<a name="l01288"></a><a class="code" href="classKFileDialog.html#ad1e39abc1cf6bebda3a7c0b71b947080">01288</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ad1e39abc1cf6bebda3a7c0b71b947080">KFileDialog::dirCompletion</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; ) <span class="comment">// SLOT</span>
<a name="l01289"></a>01289 {
<a name="l01290"></a>01290 }
<a name="l01291"></a>01291 <span class="keywordtype">void</span> KFileDialog::fileCompletion( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; match )
<a name="l01292"></a>01292 {
<a name="l01293"></a>01293     <span class="keywordflow">if</span> ( match.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; ops-&gt;<a class="code" href="classKDirOperator.html#aba59be3a6c8a070960cc5d8fd0f41d10">view</a>() )
<a name="l01294"></a>01294         ops-&gt;<a class="code" href="classKDirOperator.html#aba59be3a6c8a070960cc5d8fd0f41d10">view</a>()-&gt;<a class="code" href="classKFileView.html#a0169239144438ec5e5f140f7a86671fc" title="Clears any selection, unhighlights everything.">clearSelection</a>();
<a name="l01295"></a>01295     <span class="keywordflow">else</span>
<a name="l01296"></a>01296         ops-&gt;<a class="code" href="classKDirOperator.html#a11e48340d7c6e5ae770f50d8d83dc598" title="Clears the current selection and attempts to set filename the current file.">setCurrentItem</a>( match );
<a name="l01297"></a>01297 }
<a name="l01298"></a>01298 
<a name="l01299"></a>01299 <span class="keywordtype">void</span> KFileDialog::slotLocationChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; text )
<a name="l01300"></a>01300 {
<a name="l01301"></a>01301     <span class="keywordflow">if</span> ( text.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; ops-&gt;<a class="code" href="classKDirOperator.html#aba59be3a6c8a070960cc5d8fd0f41d10">view</a>() )
<a name="l01302"></a>01302         ops-&gt;<a class="code" href="classKDirOperator.html#aba59be3a6c8a070960cc5d8fd0f41d10">view</a>()-&gt;<a class="code" href="classKFileView.html#a0169239144438ec5e5f140f7a86671fc" title="Clears any selection, unhighlights everything.">clearSelection</a>();
<a name="l01303"></a>01303 
<a name="l01304"></a>01304     updateFilter();
<a name="l01305"></a>01305 }
<a name="l01306"></a>01306 
<a name="l01307"></a><a class="code" href="classKFileDialog.html#acca0b734e6b1d7b3dc2ee492c68a4a71">01307</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#acca0b734e6b1d7b3dc2ee492c68a4a71">KFileDialog::updateStatusLine</a>(<span class="keywordtype">int</span> <span class="comment">/* dirs */</span>, <span class="keywordtype">int</span> <span class="comment">/* files */</span>)
<a name="l01308"></a>01308 {
<a name="l01309"></a>01309     kdWarning() &lt;&lt; <span class="stringliteral">&quot;KFileDialog::updateStatusLine is deprecated! The status line no longer exists. Do not try and use it!&quot;</span> &lt;&lt; endl;
<a name="l01310"></a>01310 }
<a name="l01311"></a>01311 
<a name="l01312"></a><a class="code" href="classKFileDialog.html#a812f0953f7220dd73fe44e7be55a080f">01312</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a812f0953f7220dd73fe44e7be55a080f" title="Creates a modal file dialog and return the selected filename or an empty string if none was chosen...">KFileDialog::getOpenFileName</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01313"></a>01313                                      <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01314"></a>01314                                      <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01315"></a>01315 {
<a name="l01316"></a>01316     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01317"></a>01317     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Opening );
<a name="l01318"></a>01318 
<a name="l01319"></a>01319     dlg.<a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>( KFile::File | KFile::LocalOnly );
<a name="l01320"></a>01320     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption);
<a name="l01321"></a>01321 
<a name="l01322"></a>01322     dlg.ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01323"></a>01323     dlg.exec();
<a name="l01324"></a>01324 
<a name="l01325"></a>01325     <span class="keywordflow">return</span> dlg.<a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b" title="Returns the full path of the selected file in the local filesystem.">selectedFile</a>();
<a name="l01326"></a>01326 }
<a name="l01327"></a>01327 
<a name="l01328"></a><a class="code" href="classKFileDialog.html#a4dda8d075dd3382cfc8a753ac1b751e9">01328</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a4dda8d075dd3382cfc8a753ac1b751e9" title="Use this version only if you have no QWidget available as parent widget.">KFileDialog::getOpenFileNameWId</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01329"></a>01329                                         <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01330"></a>01330                                         WId parent_id, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01331"></a>01331 {
<a name="l01332"></a>01332     <a class="codeRef" href="qwidget.html">QWidget</a>* parent = <a class="codeRef" href="qwidget.html#find">QWidget::find</a>( parent_id );
<a name="l01333"></a>01333     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01334"></a>01334 <span class="preprocessor">#ifdef Q_WS_X11</span>
<a name="l01335"></a>01335 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( parent == NULL &amp;&amp; parent_id != 0 )
<a name="l01336"></a>01336         XSetTransientForHint( qt_xdisplay(), dlg.winId(), parent_id );
<a name="l01337"></a>01337 <span class="preprocessor">#else</span>
<a name="l01338"></a>01338 <span class="preprocessor"></span>    <span class="comment">// TODO</span>
<a name="l01339"></a>01339 <span class="preprocessor">#endif</span>
<a name="l01340"></a>01340 <span class="preprocessor"></span>
<a name="l01341"></a>01341     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( KFileDialog::Opening );
<a name="l01342"></a>01342 
<a name="l01343"></a>01343     dlg.<a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>( KFile::File | KFile::LocalOnly );
<a name="l01344"></a>01344     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption);
<a name="l01345"></a>01345 
<a name="l01346"></a>01346     dlg.ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01347"></a>01347     dlg.exec();
<a name="l01348"></a>01348 
<a name="l01349"></a>01349     <span class="keywordflow">return</span> dlg.<a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b" title="Returns the full path of the selected file in the local filesystem.">selectedFile</a>();
<a name="l01350"></a>01350 }
<a name="l01351"></a>01351 
<a name="l01352"></a><a class="code" href="classKFileDialog.html#ae81da9cc1f7efec97ad78b66c4e78903">01352</a> <a class="codeRef" href="qstringlist.html">QStringList</a> <a class="code" href="classKFileDialog.html#ae81da9cc1f7efec97ad78b66c4e78903" title="Creates a modal file dialog and returns the selected filenames or an empty list if none was chosen...">KFileDialog::getOpenFileNames</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01353"></a>01353                                           <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01354"></a>01354                                           <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01355"></a>01355                                           <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01356"></a>01356 {
<a name="l01357"></a>01357     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01358"></a>01358     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Opening );
<a name="l01359"></a>01359 
<a name="l01360"></a>01360     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption);
<a name="l01361"></a>01361     dlg.<a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>(KFile::Files | KFile::LocalOnly);
<a name="l01362"></a>01362     dlg.ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01363"></a>01363     dlg.exec();
<a name="l01364"></a>01364 
<a name="l01365"></a>01365     <span class="keywordflow">return</span> dlg.<a class="code" href="classKFileDialog.html#a8640b176548c47309c98ea246e4f8a29" title="Returns a list of all selected local files.">selectedFiles</a>();
<a name="l01366"></a>01366 }
<a name="l01367"></a>01367 
<a name="l01368"></a><a class="code" href="classKFileDialog.html#a253d8042934dc81cf7636691e741fe95">01368</a> KURL <a class="code" href="classKFileDialog.html#a253d8042934dc81cf7636691e741fe95" title="Creates a modal file dialog and returns the selected URL or an empty string if none was chosen...">KFileDialog::getOpenURL</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01369"></a>01369                                 <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01370"></a>01370 {
<a name="l01371"></a>01371     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01372"></a>01372     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Opening );
<a name="l01373"></a>01373 
<a name="l01374"></a>01374     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption);
<a name="l01375"></a>01375     dlg.<a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>( KFile::File );
<a name="l01376"></a>01376     dlg.ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01377"></a>01377     dlg.exec();
<a name="l01378"></a>01378 
<a name="l01379"></a>01379     <span class="keywordflow">return</span> dlg.<a class="code" href="classKFileDialog.html#a077c93d601ed673aa4221fa540f8fc50">selectedURL</a>();
<a name="l01380"></a>01380 }
<a name="l01381"></a>01381 
<a name="l01382"></a><a class="code" href="classKFileDialog.html#a68840cc39ae3c25b4d381d609dc9e51b">01382</a> KURL::List <a class="code" href="classKFileDialog.html#a68840cc39ae3c25b4d381d609dc9e51b" title="Creates a modal file dialog and returns the selected URLs or an empty list if none was chosen...">KFileDialog::getOpenURLs</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01383"></a>01383                                           <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01384"></a>01384                                           <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01385"></a>01385                                           <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01386"></a>01386 {
<a name="l01387"></a>01387     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01388"></a>01388     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Opening );
<a name="l01389"></a>01389 
<a name="l01390"></a>01390     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption);
<a name="l01391"></a>01391     dlg.<a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>(KFile::Files);
<a name="l01392"></a>01392     dlg.ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01393"></a>01393     dlg.exec();
<a name="l01394"></a>01394 
<a name="l01395"></a>01395     <span class="keywordflow">return</span> dlg.<a class="code" href="classKFileDialog.html#a8b423a101f59dcd6b65a9a1a6c1d102c">selectedURLs</a>();
<a name="l01396"></a>01396 }
<a name="l01397"></a>01397 
<a name="l01398"></a><a class="code" href="classKFileDialog.html#a032ba824f55b2302778ed53c68a3efe8">01398</a> KURL <a class="code" href="classKFileDialog.html#a032ba824f55b2302778ed53c68a3efe8" title="Creates a modal file dialog and returns the selected directory or an empty string if none was chosen...">KFileDialog::getExistingURL</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01399"></a>01399                                        <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01400"></a>01400                                        <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01401"></a>01401 {
<a name="l01402"></a>01402     <span class="keywordflow">return</span> <a class="code" href="classKDirSelectDialog.html#ab53d19fe6da126df07aa5cc5f6d8626c" title="Creates a KDirSelectDialog, and returns the result.">KDirSelectDialog::selectDirectory</a>(startDir, <span class="keyword">false</span>, parent, caption);
<a name="l01403"></a>01403 }
<a name="l01404"></a>01404 
<a name="l01405"></a><a class="code" href="classKFileDialog.html#a2e7168fe17589b5339e407ed5a9f5b30">01405</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a2e7168fe17589b5339e407ed5a9f5b30" title="Creates a modal file dialog and returns the selected directory or an empty string if none was chosen...">KFileDialog::getExistingDirectory</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l01406"></a>01406                                           <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01407"></a>01407                                           <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01408"></a>01408 {
<a name="l01409"></a>01409 <span class="preprocessor">#ifdef Q_WS_WIN</span>
<a name="l01410"></a>01410 <span class="preprocessor"></span>    <span class="keywordflow">return</span> <a class="code" href="classKFileDialog.html#a2e7168fe17589b5339e407ed5a9f5b30" title="Creates a modal file dialog and returns the selected directory or an empty string if none was chosen...">QFileDialog::getExistingDirectory</a>(startDir, parent, <span class="stringliteral">&quot;getExistingDirectory&quot;</span>,
<a name="l01411"></a>01411                                              caption, <span class="keyword">true</span>, <span class="keyword">true</span>);
<a name="l01412"></a>01412 <span class="preprocessor">#else</span>
<a name="l01413"></a>01413 <span class="preprocessor"></span>    KURL url = <a class="code" href="classKDirSelectDialog.html#ab53d19fe6da126df07aa5cc5f6d8626c" title="Creates a KDirSelectDialog, and returns the result.">KDirSelectDialog::selectDirectory</a>(startDir, <span class="keyword">true</span>, parent,
<a name="l01414"></a>01414                                                  caption);
<a name="l01415"></a>01415     <span class="keywordflow">if</span> ( url.isValid() )
<a name="l01416"></a>01416         <span class="keywordflow">return</span> url.path();
<a name="l01417"></a>01417 
<a name="l01418"></a>01418     <span class="keywordflow">return</span> QString::null;
<a name="l01419"></a>01419 <span class="preprocessor">#endif</span>
<a name="l01420"></a>01420 <span class="preprocessor"></span>}
<a name="l01421"></a>01421 
<a name="l01422"></a><a class="code" href="classKFileDialog.html#a9385101d1795315932c71a2103d60351">01422</a> KURL <a class="code" href="classKFileDialog.html#a9385101d1795315932c71a2103d60351" title="Creates a modal file dialog with an image previewer and returns the selected url or an empty string i...">KFileDialog::getImageOpenURL</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir, <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01423"></a>01423                                    <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01424"></a>01424 {
<a name="l01425"></a>01425     <a class="codeRef" href="qstringlist.html">QStringList</a> mimetypes = KImageIO::mimeTypes( KImageIO::Reading );
<a name="l01426"></a>01426     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(startDir,
<a name="l01427"></a>01427                     mimetypes.<a class="codeRef" href="qstringlist.html#join">join</a>(<span class="stringliteral">&quot; &quot;</span>),
<a name="l01428"></a>01428                     parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01429"></a>01429     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Opening );
<a name="l01430"></a>01430     dlg.setCaption( caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Open&quot;</span>) : caption );
<a name="l01431"></a>01431     dlg.setMode( KFile::File );
<a name="l01432"></a>01432 
<a name="l01433"></a>01433     <a class="code" href="classKImageFilePreview.html" title="Image preview widget for the file dialog.">KImageFilePreview</a> *ip = <span class="keyword">new</span> <a class="code" href="classKImageFilePreview.html" title="Image preview widget for the file dialog.">KImageFilePreview</a>( &amp;dlg );
<a name="l01434"></a>01434     dlg.setPreviewWidget( ip );
<a name="l01435"></a>01435     dlg.exec();
<a name="l01436"></a>01436 
<a name="l01437"></a>01437     <span class="keywordflow">return</span> dlg.selectedURL();
<a name="l01438"></a>01438 }
<a name="l01439"></a>01439 
<a name="l01440"></a><a class="code" href="classKFileDialog.html#a077c93d601ed673aa4221fa540f8fc50">01440</a> KURL <a class="code" href="classKFileDialog.html#a077c93d601ed673aa4221fa540f8fc50">KFileDialog::selectedURL</a>()<span class="keyword"> const</span>
<a name="l01441"></a>01441 <span class="keyword"></span>{
<a name="l01442"></a>01442     <span class="keywordflow">if</span> ( result() == QDialog::Accepted )
<a name="l01443"></a>01443         <span class="keywordflow">return</span> d-&gt;url;
<a name="l01444"></a>01444     <span class="keywordflow">else</span>
<a name="l01445"></a>01445         <span class="keywordflow">return</span> KURL();
<a name="l01446"></a>01446 }
<a name="l01447"></a>01447 
<a name="l01448"></a><a class="code" href="classKFileDialog.html#a8b423a101f59dcd6b65a9a1a6c1d102c">01448</a> KURL::List <a class="code" href="classKFileDialog.html#a8b423a101f59dcd6b65a9a1a6c1d102c">KFileDialog::selectedURLs</a>()<span class="keyword"> const</span>
<a name="l01449"></a>01449 <span class="keyword"></span>{
<a name="l01450"></a>01450     KURL::List list;
<a name="l01451"></a>01451     <span class="keywordflow">if</span> ( result() == QDialog::Accepted ) {
<a name="l01452"></a>01452         <span class="keywordflow">if</span> ( (ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>() &amp; KFile::Files) == KFile::Files )
<a name="l01453"></a>01453             list = parseSelectedURLs();
<a name="l01454"></a>01454         <span class="keywordflow">else</span>
<a name="l01455"></a>01455             list.append( d-&gt;url );
<a name="l01456"></a>01456     }
<a name="l01457"></a>01457     <span class="keywordflow">return</span> list;
<a name="l01458"></a>01458 }
<a name="l01459"></a>01459 
<a name="l01460"></a>01460 
<a name="l01461"></a>01461 KURL::List&amp; KFileDialog::parseSelectedURLs()<span class="keyword"> const</span>
<a name="l01462"></a>01462 <span class="keyword"></span>{
<a name="l01463"></a>01463     <span class="keywordflow">if</span> ( d-&gt;filenames.isEmpty() ) {
<a name="l01464"></a>01464         <span class="keywordflow">return</span> d-&gt;urlList;
<a name="l01465"></a>01465     }
<a name="l01466"></a>01466 
<a name="l01467"></a>01467     d-&gt;urlList.clear();
<a name="l01468"></a>01468     <span class="keywordflow">if</span> ( d-&gt;filenames.contains( <span class="charliteral">&#39;/&#39;</span> )) { <span class="comment">// assume _one_ absolute filename</span>
<a name="l01469"></a>01469         <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;prot = KGlobal::staticQString(<span class="stringliteral">&quot;:/&quot;</span>);
<a name="l01470"></a>01470         KURL u;
<a name="l01471"></a>01471         <span class="keywordflow">if</span> ( d-&gt;filenames.find( prot ) != -1 )
<a name="l01472"></a>01472             u = d-&gt;filenames;
<a name="l01473"></a>01473         <span class="keywordflow">else</span>
<a name="l01474"></a>01474             u.setPath( d-&gt;filenames );
<a name="l01475"></a>01475 
<a name="l01476"></a>01476         <span class="keywordflow">if</span> ( u.isValid() )
<a name="l01477"></a>01477             d-&gt;urlList.append( u );
<a name="l01478"></a>01478         <span class="keywordflow">else</span>
<a name="l01479"></a>01479             KMessageBox::error( d-&gt;mainWidget,
<a name="l01480"></a>01480                                 i18n(<span class="stringliteral">&quot;The chosen filenames do not\n&quot;</span>
<a name="l01481"></a>01481                                      <span class="stringliteral">&quot;appear to be valid.&quot;</span>),
<a name="l01482"></a>01482                                 i18n(<span class="stringliteral">&quot;Invalid Filenames&quot;</span>) );
<a name="l01483"></a>01483     }
<a name="l01484"></a>01484 
<a name="l01485"></a>01485     <span class="keywordflow">else</span>
<a name="l01486"></a>01486         d-&gt;urlList = <a class="code" href="classKFileDialog.html#a2a67866dc902c6b0e4d84f1365b60de5" title="Parses the string &quot;line&quot; for files.">tokenize</a>( d-&gt;filenames );
<a name="l01487"></a>01487 
<a name="l01488"></a>01488     d-&gt;filenames = QString::null; <span class="comment">// indicate that we parsed that one</span>
<a name="l01489"></a>01489 
<a name="l01490"></a>01490     <span class="keywordflow">return</span> d-&gt;urlList;
<a name="l01491"></a>01491 }
<a name="l01492"></a>01492 
<a name="l01493"></a>01493 
<a name="l01494"></a>01494 <span class="comment">// FIXME: current implementation drawback: a filename can&#39;t contain quotes</span>
<a name="l01495"></a><a class="code" href="classKFileDialog.html#a2a67866dc902c6b0e4d84f1365b60de5">01495</a> KURL::List <a class="code" href="classKFileDialog.html#a2a67866dc902c6b0e4d84f1365b60de5" title="Parses the string &quot;line&quot; for files.">KFileDialog::tokenize</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; line )<span class="keyword"> const</span>
<a name="l01496"></a>01496 <span class="keyword"></span>{
<a name="l01497"></a>01497     KURL::List urls;
<a name="l01498"></a>01498     KURL u( ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>() );
<a name="l01499"></a>01499     <a class="codeRef" href="qstring.html">QString</a> name;
<a name="l01500"></a>01500 
<a name="l01501"></a>01501     <span class="keywordtype">int</span> count = line.<a class="codeRef" href="qstring.html#contains">contains</a>( <span class="charliteral">&#39;&quot;&#39;</span> );
<a name="l01502"></a>01502     <span class="keywordflow">if</span> ( count == 0 ) { <span class="comment">// no &quot; &quot; -&gt; assume one single file</span>
<a name="l01503"></a>01503         u.setFileName( line );
<a name="l01504"></a>01504         <span class="keywordflow">if</span> ( u.isValid() )
<a name="l01505"></a>01505             urls.append( u );
<a name="l01506"></a>01506 
<a name="l01507"></a>01507         <span class="keywordflow">return</span> urls;
<a name="l01508"></a>01508     }
<a name="l01509"></a>01509 
<a name="l01510"></a>01510     <span class="keywordflow">if</span> ( (count % 2) == 1 ) { <span class="comment">// odd number of &quot; -&gt; error</span>
<a name="l01511"></a>01511         <a class="codeRef" href="qwidget.html">QWidget</a> *that = <span class="keyword">const_cast&lt;</span><a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> *<span class="keyword">&gt;</span>(<span class="keyword">this</span>);
<a name="l01512"></a>01512         KMessageBox::sorry(that, i18n(<span class="stringliteral">&quot;The requested filenames\n&quot;</span>
<a name="l01513"></a>01513                                       <span class="stringliteral">&quot;%1\n&quot;</span>
<a name="l01514"></a>01514                                       <span class="stringliteral">&quot;do not appear to be valid;\n&quot;</span>
<a name="l01515"></a>01515                                       <span class="stringliteral">&quot;make sure every filename is enclosed in double quotes.&quot;</span>).arg(line),
<a name="l01516"></a>01516                            i18n(<span class="stringliteral">&quot;Filename Error&quot;</span>));
<a name="l01517"></a>01517         <span class="keywordflow">return</span> urls;
<a name="l01518"></a>01518     }
<a name="l01519"></a>01519 
<a name="l01520"></a>01520     <span class="keywordtype">int</span> start = 0;
<a name="l01521"></a>01521     <span class="keywordtype">int</span> index1 = -1, index2 = -1;
<a name="l01522"></a>01522     <span class="keywordflow">while</span> ( <span class="keyword">true</span> ) {
<a name="l01523"></a>01523         index1 = line.<a class="codeRef" href="qstring.html#find">find</a>( <span class="charliteral">&#39;&quot;&#39;</span>, start );
<a name="l01524"></a>01524         index2 = line.<a class="codeRef" href="qstring.html#find">find</a>( <span class="charliteral">&#39;&quot;&#39;</span>, index1 + 1 );
<a name="l01525"></a>01525 
<a name="l01526"></a>01526         <span class="keywordflow">if</span> ( index1 &lt; 0 )
<a name="l01527"></a>01527             <span class="keywordflow">break</span>;
<a name="l01528"></a>01528 
<a name="l01529"></a>01529         <span class="comment">// get everything between the &quot; &quot;</span>
<a name="l01530"></a>01530         name = line.<a class="codeRef" href="qstring.html#mid">mid</a>( index1 + 1, index2 - index1 - 1 );
<a name="l01531"></a>01531         u.setFileName( name );
<a name="l01532"></a>01532         <span class="keywordflow">if</span> ( u.isValid() )
<a name="l01533"></a>01533             urls.append( u );
<a name="l01534"></a>01534 
<a name="l01535"></a>01535         start = index2 + 1;
<a name="l01536"></a>01536     }
<a name="l01537"></a>01537     <span class="keywordflow">return</span> urls;
<a name="l01538"></a>01538 }
<a name="l01539"></a>01539 
<a name="l01540"></a>01540 
<a name="l01541"></a><a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b">01541</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b" title="Returns the full path of the selected file in the local filesystem.">KFileDialog::selectedFile</a>()<span class="keyword"> const</span>
<a name="l01542"></a>01542 <span class="keyword"></span>{
<a name="l01543"></a>01543     <span class="keywordflow">if</span> ( result() == QDialog::Accepted )
<a name="l01544"></a>01544     {
<a name="l01545"></a>01545       KURL url = KIO::NetAccess::mostLocalURL(d-&gt;url,topLevelWidget());
<a name="l01546"></a>01546        <span class="keywordflow">if</span> (url.isLocalFile())
<a name="l01547"></a>01547            <span class="keywordflow">return</span> url.path();
<a name="l01548"></a>01548        <span class="keywordflow">else</span> {
<a name="l01549"></a>01549            KMessageBox::sorry( d-&gt;mainWidget,
<a name="l01550"></a>01550                                i18n(<span class="stringliteral">&quot;You can only select local files.&quot;</span>),
<a name="l01551"></a>01551                                i18n(<span class="stringliteral">&quot;Remote Files Not Accepted&quot;</span>) );
<a name="l01552"></a>01552        }
<a name="l01553"></a>01553     }
<a name="l01554"></a>01554     <span class="keywordflow">return</span> QString::null;
<a name="l01555"></a>01555 }
<a name="l01556"></a>01556 
<a name="l01557"></a><a class="code" href="classKFileDialog.html#a8640b176548c47309c98ea246e4f8a29">01557</a> <a class="codeRef" href="qstringlist.html">QStringList</a> <a class="code" href="classKFileDialog.html#a8640b176548c47309c98ea246e4f8a29" title="Returns a list of all selected local files.">KFileDialog::selectedFiles</a>()<span class="keyword"> const</span>
<a name="l01558"></a>01558 <span class="keyword"></span>{
<a name="l01559"></a>01559     <a class="codeRef" href="qstringlist.html">QStringList</a> list;
<a name="l01560"></a>01560     KURL url;
<a name="l01561"></a>01561 
<a name="l01562"></a>01562     <span class="keywordflow">if</span> ( result() == QDialog::Accepted ) {
<a name="l01563"></a>01563         <span class="keywordflow">if</span> ( (ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>() &amp; KFile::Files) == KFile::Files ) {
<a name="l01564"></a>01564             KURL::List urls = parseSelectedURLs();
<a name="l01565"></a>01565             <a class="codeRef" href="qvaluelistconstiterator.html">QValueListConstIterator&lt;KURL&gt;</a> it = urls.begin();
<a name="l01566"></a>01566             <span class="keywordflow">while</span> ( it != urls.end() ) {
<a name="l01567"></a>01567               url = KIO::NetAccess::mostLocalURL(*it,topLevelWidget());
<a name="l01568"></a>01568                 <span class="keywordflow">if</span> ( url.isLocalFile() )
<a name="l01569"></a>01569                     list.append( url.path() );
<a name="l01570"></a>01570                 ++it;
<a name="l01571"></a>01571             }
<a name="l01572"></a>01572         }
<a name="l01573"></a>01573 
<a name="l01574"></a>01574         <span class="keywordflow">else</span> { <span class="comment">// single-selection mode</span>
<a name="l01575"></a>01575             <span class="keywordflow">if</span> ( d-&gt;url.isLocalFile() )
<a name="l01576"></a>01576                 list.append( d-&gt;url.path() );
<a name="l01577"></a>01577         }
<a name="l01578"></a>01578     }
<a name="l01579"></a>01579 
<a name="l01580"></a>01580     <span class="keywordflow">return</span> list;
<a name="l01581"></a>01581 }
<a name="l01582"></a>01582 
<a name="l01583"></a><a class="code" href="classKFileDialog.html#ab4937294d59ec5c23f467af4500daa37">01583</a> KURL <a class="code" href="classKFileDialog.html#ab4937294d59ec5c23f467af4500daa37">KFileDialog::baseURL</a>()<span class="keyword"> const</span>
<a name="l01584"></a>01584 <span class="keyword"></span>{
<a name="l01585"></a>01585     <span class="keywordflow">return</span> ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>();
<a name="l01586"></a>01586 }
<a name="l01587"></a>01587 
<a name="l01588"></a><a class="code" href="classKFileDialog.html#a75e063f49cffd32a14d5a148b3d6cd7f">01588</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a75e063f49cffd32a14d5a148b3d6cd7f" title="Creates a modal file dialog and returns the selected filename or an empty string if none was chosen...">KFileDialog::getSaveFileName</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; dir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01589"></a>01589                                      <a class="codeRef" href="qwidget.html">QWidget</a> *parent,
<a name="l01590"></a>01590                                      <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01591"></a>01591 {
<a name="l01592"></a>01592     <span class="keywordtype">bool</span> specialDir = dir.<a class="codeRef" href="qstring.html#at">at</a>(0) == <span class="charliteral">&#39;:&#39;</span>;
<a name="l01593"></a>01593     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg( specialDir ? dir : QString::null, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01594"></a>01594     <span class="keywordflow">if</span> ( !specialDir )
<a name="l01595"></a>01595         dlg.<a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">setSelection</a>( dir ); <span class="comment">// may also be a filename</span>
<a name="l01596"></a>01596 
<a name="l01597"></a>01597     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Saving );
<a name="l01598"></a>01598     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Save As&quot;</span>) : caption);
<a name="l01599"></a>01599 
<a name="l01600"></a>01600     dlg.exec();
<a name="l01601"></a>01601 
<a name="l01602"></a>01602     <a class="codeRef" href="qstring.html">QString</a> filename = dlg.<a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b" title="Returns the full path of the selected file in the local filesystem.">selectedFile</a>();
<a name="l01603"></a>01603     <span class="keywordflow">if</span> (!filename.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>())
<a name="l01604"></a>01604         <a class="code" href="classKRecentDocument.html#aff82f3d6f9f39010226ec0899b9e26ae" title="Add a new item to the Recent Document menu.">KRecentDocument::add</a>(filename);
<a name="l01605"></a>01605 
<a name="l01606"></a>01606     <span class="keywordflow">return</span> filename;
<a name="l01607"></a>01607 }
<a name="l01608"></a>01608 
<a name="l01609"></a><a class="code" href="classKFileDialog.html#acdbe5e761859074aa6309c959a90ec4f">01609</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#acdbe5e761859074aa6309c959a90ec4f" title="This function accepts the window id of the parent window, instead of QWidget*.">KFileDialog::getSaveFileNameWId</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; dir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01610"></a>01610                                      WId parent_id,
<a name="l01611"></a>01611                                      <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01612"></a>01612 {
<a name="l01613"></a>01613     <span class="keywordtype">bool</span> specialDir = dir.<a class="codeRef" href="qstring.html#at">at</a>(0) == <span class="charliteral">&#39;:&#39;</span>;
<a name="l01614"></a>01614     <a class="codeRef" href="qwidget.html">QWidget</a>* parent = <a class="codeRef" href="qwidget.html#find">QWidget::find</a>( parent_id );
<a name="l01615"></a>01615     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg( specialDir ? dir : QString::null, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01616"></a>01616 <span class="preprocessor">#ifdef Q_WS_X11</span>
<a name="l01617"></a>01617 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( parent == NULL &amp;&amp; parent_id != 0 )
<a name="l01618"></a>01618         XSetTransientForHint(qt_xdisplay(), dlg.winId(), parent_id);
<a name="l01619"></a>01619 <span class="preprocessor">#else</span>
<a name="l01620"></a>01620 <span class="preprocessor"></span>    <span class="comment">// TODO</span>
<a name="l01621"></a>01621 <span class="preprocessor">#endif</span>
<a name="l01622"></a>01622 <span class="preprocessor"></span>
<a name="l01623"></a>01623     <span class="keywordflow">if</span> ( !specialDir )
<a name="l01624"></a>01624         dlg.<a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">setSelection</a>( dir ); <span class="comment">// may also be a filename</span>
<a name="l01625"></a>01625 
<a name="l01626"></a>01626     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( KFileDialog::Saving);
<a name="l01627"></a>01627     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Save As&quot;</span>) : caption);
<a name="l01628"></a>01628 
<a name="l01629"></a>01629     dlg.exec();
<a name="l01630"></a>01630 
<a name="l01631"></a>01631     <a class="codeRef" href="qstring.html">QString</a> filename = dlg.<a class="code" href="classKFileDialog.html#aa79fea03ad98eea8e11fd193540c8e8b" title="Returns the full path of the selected file in the local filesystem.">selectedFile</a>();
<a name="l01632"></a>01632     <span class="keywordflow">if</span> (!filename.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>())
<a name="l01633"></a>01633         <a class="code" href="classKRecentDocument.html#aff82f3d6f9f39010226ec0899b9e26ae" title="Add a new item to the Recent Document menu.">KRecentDocument::add</a>(filename);
<a name="l01634"></a>01634 
<a name="l01635"></a>01635     <span class="keywordflow">return</span> filename;
<a name="l01636"></a>01636 }
<a name="l01637"></a>01637 
<a name="l01638"></a><a class="code" href="classKFileDialog.html#acc5ed3cd53e7dd5aa0c4a11b027c06ee">01638</a> KURL <a class="code" href="classKFileDialog.html#acc5ed3cd53e7dd5aa0c4a11b027c06ee" title="Creates a modal file dialog and returns the selected filename or an empty string if none was chosen...">KFileDialog::getSaveURL</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; dir, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; filter,
<a name="l01639"></a>01639                              <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; caption)
<a name="l01640"></a>01640 {
<a name="l01641"></a>01641     <span class="keywordtype">bool</span> specialDir = dir.<a class="codeRef" href="qstring.html#at">at</a>(0) == <span class="charliteral">&#39;:&#39;</span>;
<a name="l01642"></a>01642     <a class="code" href="classKFileDialog.html" title="Provides a user (and developer) friendly way to select files and directories.">KFileDialog</a> dlg(specialDir ? dir : QString::null, filter, parent, <span class="stringliteral">&quot;filedialog&quot;</span>, <span class="keyword">true</span>);
<a name="l01643"></a>01643     <span class="keywordflow">if</span> ( !specialDir )
<a name="l01644"></a>01644     dlg.<a class="code" href="classKFileDialog.html#ace285ad4426916c045a869c908fb645e" title="Sets the file name to preselect to name.">setSelection</a>( dir ); <span class="comment">// may also be a filename</span>
<a name="l01645"></a>01645 
<a name="l01646"></a>01646     dlg.setCaption(caption.<a class="codeRef" href="qstring.html#isNull">isNull</a>() ? i18n(<span class="stringliteral">&quot;Save As&quot;</span>) : caption);
<a name="l01647"></a>01647     dlg.<a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">setOperationMode</a>( Saving );
<a name="l01648"></a>01648 
<a name="l01649"></a>01649     dlg.exec();
<a name="l01650"></a>01650 
<a name="l01651"></a>01651     KURL url = dlg.<a class="code" href="classKFileDialog.html#a077c93d601ed673aa4221fa540f8fc50">selectedURL</a>();
<a name="l01652"></a>01652     <span class="keywordflow">if</span> (url.isValid())
<a name="l01653"></a>01653         <a class="code" href="classKRecentDocument.html#aff82f3d6f9f39010226ec0899b9e26ae" title="Add a new item to the Recent Document menu.">KRecentDocument::add</a>( url );
<a name="l01654"></a>01654 
<a name="l01655"></a>01655     <span class="keywordflow">return</span> url;
<a name="l01656"></a>01656 }
<a name="l01657"></a>01657 
<a name="l01658"></a>01658 <span class="keywordtype">void</span> KFileDialog::show()
<a name="l01659"></a>01659 {
<a name="l01660"></a>01660     <span class="keywordflow">if</span> ( !d-&gt;hasView ) { <span class="comment">// delayed view-creation</span>
<a name="l01661"></a>01661         ops-&gt;<a class="code" href="classKDirOperator.html#ad2e8eba4afde0ffe026b0c0b49c57f48" title="Sets a new KFileView to be used for showing and browsing files.">setView</a>(KFile::Default);
<a name="l01662"></a>01662         ops-&gt;<a class="code" href="classKDirOperator.html#a778b1ff52b3ad19269a287569dcb0163" title="Clears the forward and backward history.">clearHistory</a>();
<a name="l01663"></a>01663         d-&gt;hasView = <span class="keyword">true</span>;
<a name="l01664"></a>01664     }
<a name="l01665"></a>01665 
<a name="l01666"></a>01666     KDialogBase::show();
<a name="l01667"></a>01667 }
<a name="l01668"></a>01668 
<a name="l01669"></a><a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f">01669</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">KFileDialog::setMode</a>( <a class="code" href="classKFile.html#a51dfa652719902db7d60ebea2ba0d0fd" title="Modes of operation for the dialog.">KFile::Mode</a> m )
<a name="l01670"></a>01670 {
<a name="l01671"></a>01671     ops-&gt;<a class="code" href="classKDirOperator.html#ad1bc3ac745ee8bcfc3a3dac67fb78b4c" title="Sets the listing/selection mode for the views, an OR&#39;ed combination of.">setMode</a>(m);
<a name="l01672"></a>01672     <span class="keywordflow">if</span> ( ops-&gt;<a class="code" href="classKDirOperator.html#a78e32b27b5b548c81502337f8ed11735">dirOnlyMode</a>() ) {
<a name="l01673"></a>01673         filterWidget-&gt;setDefaultFilter( i18n(<span class="stringliteral">&quot;*|All Folders&quot;</span>) );
<a name="l01674"></a>01674     }
<a name="l01675"></a>01675     <span class="keywordflow">else</span> {
<a name="l01676"></a>01676         filterWidget-&gt;setDefaultFilter( i18n(<span class="stringliteral">&quot;*|All Files&quot;</span>) );
<a name="l01677"></a>01677     }
<a name="l01678"></a>01678 
<a name="l01679"></a>01679     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l01680"></a>01680 }
<a name="l01681"></a>01681 
<a name="l01682"></a><a class="code" href="classKFileDialog.html#a801af64b9156d2923318dae41d12f584">01682</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">KFileDialog::setMode</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m )
<a name="l01683"></a>01683 {
<a name="l01684"></a>01684     <a class="code" href="classKFileDialog.html#a8e01e35a93d7980c88318dadc6f7572f" title="Convenient overload of the other setMode(unsigned int) method.">setMode</a>(static_cast&lt;KFile::Mode&gt;( m ));
<a name="l01685"></a>01685 }
<a name="l01686"></a>01686 
<a name="l01687"></a><a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d">01687</a> <a class="code" href="classKFile.html#a51dfa652719902db7d60ebea2ba0d0fd" title="Modes of operation for the dialog.">KFile::Mode</a> <a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">KFileDialog::mode</a>()<span class="keyword"> const</span>
<a name="l01688"></a>01688 <span class="keyword"></span>{
<a name="l01689"></a>01689     <span class="keywordflow">return</span> ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>();
<a name="l01690"></a>01690 }
<a name="l01691"></a>01691 
<a name="l01692"></a>01692 
<a name="l01693"></a><a class="code" href="classKFileDialog.html#aa6c93d30d701c6723b4151f7c74263e2">01693</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#aa6c93d30d701c6723b4151f7c74263e2" title="Reads configuration and applies it (size, recent directories, ...)">KFileDialog::readConfig</a>( KConfig *kc, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; group )
<a name="l01694"></a>01694 {
<a name="l01695"></a>01695     <span class="keywordflow">if</span> ( !kc )
<a name="l01696"></a>01696         <span class="keywordflow">return</span>;
<a name="l01697"></a>01697 
<a name="l01698"></a>01698     <a class="codeRef" href="qstring.html">QString</a> oldGroup = kc-&gt;group();
<a name="l01699"></a>01699     <span class="keywordflow">if</span> ( !group.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() )
<a name="l01700"></a>01700         kc-&gt;setGroup( group );
<a name="l01701"></a>01701 
<a name="l01702"></a>01702     ops-&gt;<a class="code" href="classKDirOperator.html#af1588467c5f3ab3d85eeed92bf132482" title="Reads the default settings for a view, i.e.">readConfig</a>( kc, group );
<a name="l01703"></a>01703 
<a name="l01704"></a>01704     <a class="code" href="classKURLComboBox.html" title="This combobox shows a number of recent URLs/directories, as well as some default directories.">KURLComboBox</a> *combo = d-&gt;pathCombo;
<a name="l01705"></a>01705     combo-&gt;<a class="code" href="classKURLComboBox.html#a0e59273cd22cb5affa89b1f508414674" title="Inserts urls into the combobox below the &quot;default urls&quot; (see addDefaultURL).">setURLs</a>( kc-&gt;readPathListEntry( RecentURLs ), KURLComboBox::RemoveTop );
<a name="l01706"></a>01706     combo-&gt;<a class="code" href="classKURLComboBox.html#ad755db898adb7f08be1fa24957048462" title="Sets how many items should be handled and displayed by the combobox.">setMaxItems</a>( kc-&gt;readNumEntry( RecentURLsNumber,
<a name="l01707"></a>01707                                           DefaultRecentURLsNumber ) );
<a name="l01708"></a>01708     combo-&gt;<a class="code" href="classKURLComboBox.html#aa7b52809849c1cf0e0dafa568164cc1b" title="Sets the current url.">setURL</a>( ops-&gt;<a class="code" href="classKDirOperator.html#a17faf13203191a89b984a2a373505ca3">url</a>() );
<a name="l01709"></a>01709     autoDirectoryFollowing = kc-&gt;readBoolEntry( AutoDirectoryFollowing,
<a name="l01710"></a>01710                                                 DefaultDirectoryFollowing );
<a name="l01711"></a>01711 
<a name="l01712"></a>01712     KGlobalSettings::Completion cm = (KGlobalSettings::Completion)
<a name="l01713"></a>01713                                       kc-&gt;readNumEntry( PathComboCompletionMode,
<a name="l01714"></a>01714                                       KGlobalSettings::completionMode() );
<a name="l01715"></a>01715     <span class="keywordflow">if</span> ( cm != KGlobalSettings::completionMode() )
<a name="l01716"></a>01716         combo-&gt;setCompletionMode( cm );
<a name="l01717"></a>01717 
<a name="l01718"></a>01718     cm = (KGlobalSettings::Completion)
<a name="l01719"></a>01719          kc-&gt;readNumEntry( LocationComboCompletionMode,
<a name="l01720"></a>01720                            KGlobalSettings::completionMode() );
<a name="l01721"></a>01721     <span class="keywordflow">if</span> ( cm != KGlobalSettings::completionMode() )
<a name="l01722"></a>01722         locationEdit-&gt;setCompletionMode( cm );
<a name="l01723"></a>01723 
<a name="l01724"></a>01724     <span class="comment">// show or don&#39;t show the speedbar</span>
<a name="l01725"></a>01725     <a class="code" href="classKFileDialog.html#a15823cbc52705429d31c892647a5958f">toggleSpeedbar</a>( kc-&gt;readBoolEntry(ShowSpeedbar, <span class="keyword">true</span>) );
<a name="l01726"></a>01726 
<a name="l01727"></a>01727     <span class="comment">// show or don&#39;t show the bookmarks</span>
<a name="l01728"></a>01728     <a class="code" href="classKFileDialog.html#af58b2304c13a620b2db59076da66da8b">toggleBookmarks</a>( kc-&gt;readBoolEntry(ShowBookmarks, <span class="keyword">false</span>) );
<a name="l01729"></a>01729 
<a name="l01730"></a>01730     <span class="comment">// does the user want Automatically Select Extension?</span>
<a name="l01731"></a>01731     d-&gt;autoSelectExtChecked = kc-&gt;readBoolEntry (AutoSelectExtChecked, DefaultAutoSelectExtChecked);
<a name="l01732"></a>01732     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l01733"></a>01733 
<a name="l01734"></a>01734     <span class="keywordtype">int</span> w1 = minimumSize().width();
<a name="l01735"></a>01735     <span class="keywordtype">int</span> w2 = toolbar-&gt;sizeHint().width() + 10;
<a name="l01736"></a>01736     <span class="keywordflow">if</span> (w1 &lt; w2)
<a name="l01737"></a>01737         setMinimumWidth(w2);
<a name="l01738"></a>01738 
<a name="l01739"></a>01739     <a class="codeRef" href="qsize.html">QSize</a> size = configDialogSize( group );
<a name="l01740"></a>01740     resize( size );
<a name="l01741"></a>01741     kc-&gt;setGroup( oldGroup );
<a name="l01742"></a>01742 }
<a name="l01743"></a>01743 
<a name="l01744"></a><a class="code" href="classKFileDialog.html#ae60384cda5851a55e766fb164d18a472">01744</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#ae60384cda5851a55e766fb164d18a472" title="Saves the current configuration.">KFileDialog::writeConfig</a>( KConfig *kc, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; group )
<a name="l01745"></a>01745 {
<a name="l01746"></a>01746     <span class="keywordflow">if</span> ( !kc )
<a name="l01747"></a>01747         <span class="keywordflow">return</span>;
<a name="l01748"></a>01748 
<a name="l01749"></a>01749     <a class="codeRef" href="qstring.html">QString</a> oldGroup = kc-&gt;group();
<a name="l01750"></a>01750     <span class="keywordflow">if</span> ( !group.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() )
<a name="l01751"></a>01751         kc-&gt;setGroup( group );
<a name="l01752"></a>01752 
<a name="l01753"></a>01753     kc-&gt;writePathEntry( RecentURLs, d-&gt;pathCombo-&gt;urls() );
<a name="l01754"></a>01754     saveDialogSize( group, <span class="keyword">true</span> );
<a name="l01755"></a>01755     kc-&gt;writeEntry( PathComboCompletionMode, static_cast&lt;int&gt;(d-&gt;pathCombo-&gt;completionMode()) );
<a name="l01756"></a>01756     kc-&gt;writeEntry( LocationComboCompletionMode, static_cast&lt;int&gt;(locationEdit-&gt;completionMode()) );
<a name="l01757"></a>01757     kc-&gt;writeEntry( ShowSpeedbar, d-&gt;urlBar &amp;&amp; !d-&gt;urlBar-&gt;isHidden() );
<a name="l01758"></a>01758     kc-&gt;writeEntry( ShowBookmarks, d-&gt;bookmarkHandler != 0 );
<a name="l01759"></a>01759     kc-&gt;writeEntry( AutoSelectExtChecked, d-&gt;autoSelectExtChecked );
<a name="l01760"></a>01760 
<a name="l01761"></a>01761     ops-&gt;<a class="code" href="classKDirOperator.html#a5febb5946928e960d6b8352e0b99a433" title="Saves the current settings like sorting, simple or detailed view.">writeConfig</a>( kc, group );
<a name="l01762"></a>01762     kc-&gt;setGroup( oldGroup );
<a name="l01763"></a>01763 }
<a name="l01764"></a>01764 
<a name="l01765"></a>01765 
<a name="l01766"></a><a class="code" href="classKFileDialog.html#a33ba2578d6d0d87636dc28f860380f14">01766</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a33ba2578d6d0d87636dc28f860380f14" title="Reads the recent used files and inserts them into the location combobox.">KFileDialog::readRecentFiles</a>( KConfig *kc )
<a name="l01767"></a>01767 {
<a name="l01768"></a>01768     <a class="codeRef" href="qstring.html">QString</a> oldGroup = kc-&gt;group();
<a name="l01769"></a>01769     kc-&gt;setGroup( ConfigGroup );
<a name="l01770"></a>01770 
<a name="l01771"></a>01771     locationEdit-&gt;<a class="code" href="classKURLComboBox.html#ad755db898adb7f08be1fa24957048462" title="Sets how many items should be handled and displayed by the combobox.">setMaxItems</a>( kc-&gt;readNumEntry( RecentFilesNumber,
<a name="l01772"></a>01772                                                  DefaultRecentURLsNumber ) );
<a name="l01773"></a>01773     locationEdit-&gt;<a class="code" href="classKURLComboBox.html#a0e59273cd22cb5affa89b1f508414674" title="Inserts urls into the combobox below the &quot;default urls&quot; (see addDefaultURL).">setURLs</a>( kc-&gt;readPathListEntry( RecentFiles ),
<a name="l01774"></a>01774                            KURLComboBox::RemoveBottom );
<a name="l01775"></a>01775     locationEdit-&gt;insertItem( QString::null, 0 ); <span class="comment">// dummy item without pixmap</span>
<a name="l01776"></a>01776     locationEdit-&gt;setCurrentItem( 0 );
<a name="l01777"></a>01777 
<a name="l01778"></a>01778     kc-&gt;setGroup( oldGroup );
<a name="l01779"></a>01779 }
<a name="l01780"></a>01780 
<a name="l01781"></a><a class="code" href="classKFileDialog.html#a04b6c10cad49278ec158ddfbce4a505a">01781</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a04b6c10cad49278ec158ddfbce4a505a" title="Saves the entries from the location combobox.">KFileDialog::saveRecentFiles</a>( KConfig *kc )
<a name="l01782"></a>01782 {
<a name="l01783"></a>01783     <a class="codeRef" href="qstring.html">QString</a> oldGroup = kc-&gt;group();
<a name="l01784"></a>01784     kc-&gt;setGroup( ConfigGroup );
<a name="l01785"></a>01785 
<a name="l01786"></a>01786     kc-&gt;writePathEntry( RecentFiles, locationEdit-&gt;urls() );
<a name="l01787"></a>01787 
<a name="l01788"></a>01788     kc-&gt;setGroup( oldGroup );
<a name="l01789"></a>01789 }
<a name="l01790"></a>01790 
<a name="l01791"></a><a class="code" href="classKFileDialog.html#afe0157d8f50eabfe38cbf8066b7d6efe">01791</a> KPushButton * <a class="code" href="classKFileDialog.html#afe0157d8f50eabfe38cbf8066b7d6efe">KFileDialog::okButton</a>()<span class="keyword"> const</span>
<a name="l01792"></a>01792 <span class="keyword"></span>{
<a name="l01793"></a>01793     <span class="keywordflow">return</span> d-&gt;okButton;
<a name="l01794"></a>01794 }
<a name="l01795"></a>01795 
<a name="l01796"></a><a class="code" href="classKFileDialog.html#a0af07265d5589d7ece3ee9939338bd52">01796</a> KPushButton * <a class="code" href="classKFileDialog.html#a0af07265d5589d7ece3ee9939338bd52">KFileDialog::cancelButton</a>()<span class="keyword"> const</span>
<a name="l01797"></a>01797 <span class="keyword"></span>{
<a name="l01798"></a>01798     <span class="keywordflow">return</span> d-&gt;cancelButton;
<a name="l01799"></a>01799 }
<a name="l01800"></a>01800 
<a name="l01801"></a><a class="code" href="classKFileDialog.html#a0befe8043e0ad26ccec4ca2e91f4c1a9">01801</a> <a class="code" href="classKURLBar.html" title="KURLBar is a widget that displays icons together with a description.">KURLBar</a> * <a class="code" href="classKFileDialog.html#a0befe8043e0ad26ccec4ca2e91f4c1a9">KFileDialog::speedBar</a>()
<a name="l01802"></a>01802 {
<a name="l01803"></a>01803     <span class="keywordflow">return</span> d-&gt;urlBar;
<a name="l01804"></a>01804 }
<a name="l01805"></a>01805 
<a name="l01806"></a>01806 <span class="keywordtype">void</span> KFileDialog::slotCancel()
<a name="l01807"></a>01807 {
<a name="l01808"></a>01808     ops-&gt;<a class="code" href="classKDirOperator.html#a488b3c9d13d723ea12c9303ae21616e2" title="Stops loading immediately.">close</a>();
<a name="l01809"></a>01809     KDialogBase::slotCancel();
<a name="l01810"></a>01810 
<a name="l01811"></a>01811     KConfig *config = KGlobal::config();
<a name="l01812"></a>01812     config-&gt;setForceGlobal( <span class="keyword">true</span> );
<a name="l01813"></a>01813     <a class="code" href="classKFileDialog.html#ae60384cda5851a55e766fb164d18a472" title="Saves the current configuration.">writeConfig</a>( config, ConfigGroup );
<a name="l01814"></a>01814     config-&gt;setForceGlobal( <span class="keyword">false</span> );
<a name="l01815"></a>01815 }
<a name="l01816"></a>01816 
<a name="l01817"></a><a class="code" href="classKFileDialog.html#a0db8f85de4778453dc831b5549a92fea">01817</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a0db8f85de4778453dc831b5549a92fea" title="Sets whether the filename/url should be kept when changing directories.">KFileDialog::setKeepLocation</a>( <span class="keywordtype">bool</span> keep )
<a name="l01818"></a>01818 {
<a name="l01819"></a>01819     d-&gt;keepLocation = keep;
<a name="l01820"></a>01820 }
<a name="l01821"></a>01821 
<a name="l01822"></a><a class="code" href="classKFileDialog.html#a6e447b94a553581b2d1a0fbacce3d583">01822</a> <span class="keywordtype">bool</span> <a class="code" href="classKFileDialog.html#a6e447b94a553581b2d1a0fbacce3d583">KFileDialog::keepsLocation</a>()<span class="keyword"> const</span>
<a name="l01823"></a>01823 <span class="keyword"></span>{
<a name="l01824"></a>01824     <span class="keywordflow">return</span> d-&gt;keepLocation;
<a name="l01825"></a>01825 }
<a name="l01826"></a>01826 
<a name="l01827"></a><a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7">01827</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a201f3f4ebb61d99fafa2dca35b2765a7" title="Sets the operational mode of the filedialog to Saving, Opening or Other.">KFileDialog::setOperationMode</a>( <a class="code" href="classKFileDialog.html#a92793cc7dbd998ec502567ab056b7098" title="Defines some default behavior of the filedialog.">OperationMode</a> mode )
<a name="l01828"></a>01828 {
<a name="l01829"></a>01829     d-&gt;operationMode = <a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>;
<a name="l01830"></a>01830     d-&gt;keepLocation = (mode == Saving);
<a name="l01831"></a>01831     filterWidget-&gt;setEditable( !d-&gt;hasDefaultFilter || mode != Saving );
<a name="l01832"></a>01832     <span class="keywordflow">if</span> ( mode == Opening )
<a name="l01833"></a>01833        d-&gt;okButton-&gt;setGuiItem( KGuiItem( i18n(<span class="stringliteral">&quot;&amp;Open&quot;</span>), <span class="stringliteral">&quot;fileopen&quot;</span>) );
<a name="l01834"></a>01834     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( mode == Saving ) {
<a name="l01835"></a>01835        d-&gt;okButton-&gt;setGuiItem( KStdGuiItem::save() );
<a name="l01836"></a>01836        setNonExtSelection();
<a name="l01837"></a>01837     }
<a name="l01838"></a>01838     <span class="keywordflow">else</span>
<a name="l01839"></a>01839        d-&gt;okButton-&gt;setGuiItem( KStdGuiItem::ok() );
<a name="l01840"></a>01840     updateLocationWhatsThis ();
<a name="l01841"></a>01841     <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">updateAutoSelectExtension</a> ();
<a name="l01842"></a>01842 }
<a name="l01843"></a>01843 
<a name="l01844"></a><a class="code" href="classKFileDialog.html#a85c71ce67e27afd3877694ef8ebcc045">01844</a> <a class="code" href="classKFileDialog.html#a92793cc7dbd998ec502567ab056b7098" title="Defines some default behavior of the filedialog.">KFileDialog::OperationMode</a> <a class="code" href="classKFileDialog.html#a85c71ce67e27afd3877694ef8ebcc045">KFileDialog::operationMode</a>()<span class="keyword"> const</span>
<a name="l01845"></a>01845 <span class="keyword"></span>{
<a name="l01846"></a>01846     <span class="keywordflow">return</span> d-&gt;operationMode;
<a name="l01847"></a>01847 }
<a name="l01848"></a>01848 
<a name="l01849"></a>01849 <span class="keywordtype">void</span> KFileDialog::slotAutoSelectExtClicked()
<a name="l01850"></a>01850 {
<a name="l01851"></a>01851     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;slotAutoSelectExtClicked(): &quot;</span>
<a name="l01852"></a>01852                          &lt;&lt; d-&gt;autoSelectExtCheckBox-&gt;isChecked () &lt;&lt; endl;
<a name="l01853"></a>01853 
<a name="l01854"></a>01854     <span class="comment">// whether the _user_ wants it on/off</span>
<a name="l01855"></a>01855     d-&gt;autoSelectExtChecked = d-&gt;autoSelectExtCheckBox-&gt;isChecked ();
<a name="l01856"></a>01856 
<a name="l01857"></a>01857     <span class="comment">// update the current filename&#39;s extension</span>
<a name="l01858"></a>01858     updateLocationEditExtension (d-&gt;extension <span class="comment">/* extension hasn&#39;t changed */</span>);
<a name="l01859"></a>01859 }
<a name="l01860"></a>01860 
<a name="l01861"></a>01861 <span class="keyword">static</span> <a class="codeRef" href="qstring.html">QString</a> getExtensionFromPatternList (<span class="keyword">const</span> <a class="codeRef" href="qstringlist.html">QStringList</a> &amp;patternList)
<a name="l01862"></a>01862 {
<a name="l01863"></a>01863     <a class="codeRef" href="qstring.html">QString</a> ret;
<a name="l01864"></a>01864     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tgetExtension &quot;</span> &lt;&lt; patternList &lt;&lt; endl;
<a name="l01865"></a>01865 
<a name="l01866"></a>01866     QStringList::ConstIterator patternListEnd = patternList.end ();
<a name="l01867"></a>01867     <span class="keywordflow">for</span> (QStringList::ConstIterator it = patternList.begin ();
<a name="l01868"></a>01868          it != patternListEnd;
<a name="l01869"></a>01869          it++)
<a name="l01870"></a>01870     {
<a name="l01871"></a>01871         kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\t\ttry: \&#39;&quot;</span> &lt;&lt; (*it) &lt;&lt; <span class="stringliteral">&quot;\&#39;&quot;</span> &lt;&lt; endl;
<a name="l01872"></a>01872 
<a name="l01873"></a>01873         <span class="comment">// is this pattern like &quot;*.BMP&quot; rather than useless things like:</span>
<a name="l01874"></a>01874         <span class="comment">//</span>
<a name="l01875"></a>01875         <span class="comment">// README</span>
<a name="l01876"></a>01876         <span class="comment">// *.</span>
<a name="l01877"></a>01877         <span class="comment">// *.*</span>
<a name="l01878"></a>01878         <span class="comment">// *.JP*G</span>
<a name="l01879"></a>01879         <span class="comment">// *.JP?</span>
<a name="l01880"></a>01880         <span class="keywordflow">if</span> ((*it).startsWith (<span class="stringliteral">&quot;*.&quot;</span>) &amp;&amp;
<a name="l01881"></a>01881             (*it).length () &gt; 2 &amp;&amp;
<a name="l01882"></a>01882             (*it).find (<span class="charliteral">&#39;*&#39;</span>, 2) &lt; 0 &amp;&amp; (*it).find (<span class="charliteral">&#39;?&#39;</span>, 2) &lt; 0)
<a name="l01883"></a>01883         {
<a name="l01884"></a>01884             ret = (*it).<a class="codeRef" href="qstring.html#mid">mid</a> (1);
<a name="l01885"></a>01885             <span class="keywordflow">break</span>;
<a name="l01886"></a>01886         }
<a name="l01887"></a>01887     }
<a name="l01888"></a>01888 
<a name="l01889"></a>01889     <span class="keywordflow">return</span> ret;
<a name="l01890"></a>01890 }
<a name="l01891"></a>01891 
<a name="l01892"></a>01892 <span class="keyword">static</span> <a class="codeRef" href="qstring.html">QString</a> stripUndisplayable (<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;<span class="keywordtype">string</span>)
<a name="l01893"></a>01893 {
<a name="l01894"></a>01894     <a class="codeRef" href="qstring.html">QString</a> ret = string;
<a name="l01895"></a>01895 
<a name="l01896"></a>01896     ret.<a class="codeRef" href="qstring.html#remove">remove</a> (<span class="charliteral">&#39;:&#39;</span>);
<a name="l01897"></a>01897     ret.<a class="codeRef" href="qstring.html#remove">remove</a> (<span class="charliteral">&#39;&amp;&#39;</span>);
<a name="l01898"></a>01898 
<a name="l01899"></a>01899     <span class="keywordflow">return</span> ret;
<a name="l01900"></a>01900 }
<a name="l01901"></a>01901 
<a name="l01902"></a>01902 
<a name="l01903"></a><a class="code" href="classKFileDialog.html#a8aac531475be31e7c71a536fe0558a99">01903</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKFileDialog.html#a8aac531475be31e7c71a536fe0558a99" title="Returns the filename extension associated with the currentFilter().">KFileDialog::currentFilterExtension</a> (<span class="keywordtype">void</span>)
<a name="l01904"></a>01904 {
<a name="l01905"></a>01905     <span class="keywordflow">return</span> d-&gt;extension;
<a name="l01906"></a>01906 }
<a name="l01907"></a>01907 
<a name="l01908"></a><a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c">01908</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a12c4f68d45c195f5e3592326b4769c6c" title="Updates the currentFilterExtension and the availability of the Automatically Select Extension Checkbo...">KFileDialog::updateAutoSelectExtension</a> (<span class="keywordtype">void</span>)
<a name="l01909"></a>01909 {
<a name="l01910"></a>01910     <span class="keywordflow">if</span> (!d-&gt;autoSelectExtCheckBox) <span class="keywordflow">return</span>;
<a name="l01911"></a>01911 
<a name="l01912"></a>01912     <span class="comment">//</span>
<a name="l01913"></a>01913     <span class="comment">// Figure out an extension for the Automatically Select Extension thing</span>
<a name="l01914"></a>01914     <span class="comment">// (some Windows users apparently don&#39;t know what to do when confronted</span>
<a name="l01915"></a>01915     <span class="comment">// with a text file called &quot;COPYING&quot; but do know what to do with</span>
<a name="l01916"></a>01916     <span class="comment">// COPYING.txt ...)</span>
<a name="l01917"></a>01917     <span class="comment">//</span>
<a name="l01918"></a>01918 
<a name="l01919"></a>01919     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;Figure out an extension: &quot;</span> &lt;&lt; endl;
<a name="l01920"></a>01920     <a class="codeRef" href="qstring.html">QString</a> lastExtension = d-&gt;extension;
<a name="l01921"></a>01921     d-&gt;extension = QString::null;
<a name="l01922"></a>01922 
<a name="l01923"></a>01923     <span class="comment">// Automatically Select Extension is only valid if the user is _saving_ a _file_</span>
<a name="l01924"></a>01924     <span class="keywordflow">if</span> ((<a class="code" href="classKFileDialog.html#a85c71ce67e27afd3877694ef8ebcc045">operationMode</a> () == Saving) &amp;&amp; (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a> () &amp; KFile::File))
<a name="l01925"></a>01925     {
<a name="l01926"></a>01926         <span class="comment">//</span>
<a name="l01927"></a>01927         <span class="comment">// Get an extension from the filter</span>
<a name="l01928"></a>01928         <span class="comment">//</span>
<a name="l01929"></a>01929 
<a name="l01930"></a>01930         <a class="codeRef" href="qstring.html">QString</a> filter = <a class="code" href="classKFileDialog.html#a4ccfa2e42e5853db00a0d1369b00bd1d" title="Returns the current filter as entered by the user or one of the predefined set via setFilter()...">currentFilter</a> ();
<a name="l01931"></a>01931         <span class="keywordflow">if</span> (!filter.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a> ())
<a name="l01932"></a>01932         {
<a name="l01933"></a>01933             <span class="comment">// e.g. &quot;*.cpp&quot;</span>
<a name="l01934"></a>01934             <span class="keywordflow">if</span> (filter.<a class="codeRef" href="qstring.html#find">find</a> (<span class="charliteral">&#39;/&#39;</span>) &lt; 0)
<a name="l01935"></a>01935             {
<a name="l01936"></a>01936                 d-&gt;extension = getExtensionFromPatternList (<a class="codeRef" href="qstringlist.html#split">QStringList::split</a> (<span class="stringliteral">&quot; &quot;</span>, filter)).<a class="codeRef" href="qstring.html#lower">lower</a> ();
<a name="l01937"></a>01937                 kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tsetFilter-style: pattern ext=\&#39;&quot;</span>
<a name="l01938"></a>01938                                     &lt;&lt; d-&gt;extension &lt;&lt; <span class="stringliteral">&quot;\&#39;&quot;</span> &lt;&lt; endl;
<a name="l01939"></a>01939             }
<a name="l01940"></a>01940             <span class="comment">// e.g. &quot;text/html&quot;</span>
<a name="l01941"></a>01941             <span class="keywordflow">else</span>
<a name="l01942"></a>01942             {
<a name="l01943"></a>01943                 KMimeType::Ptr mime = KMimeType::mimeType (filter);
<a name="l01944"></a>01944 
<a name="l01945"></a>01945                 <span class="comment">// first try X-KDE-NativeExtension</span>
<a name="l01946"></a>01946                 <a class="codeRef" href="qstring.html">QString</a> nativeExtension = mime-&gt;property (<span class="stringliteral">&quot;X-KDE-NativeExtension&quot;</span>).toString ();
<a name="l01947"></a>01947                 <span class="keywordflow">if</span> (nativeExtension.<a class="codeRef" href="qstring.html#at">at</a> (0) == <span class="charliteral">&#39;.&#39;</span>)
<a name="l01948"></a>01948                 {
<a name="l01949"></a>01949                     d-&gt;extension = nativeExtension.<a class="codeRef" href="qstring.html#lower">lower</a> ();
<a name="l01950"></a>01950                     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tsetMimeFilter-style: native ext=\&#39;&quot;</span>
<a name="l01951"></a>01951                                          &lt;&lt; d-&gt;extension &lt;&lt; <span class="stringliteral">&quot;\&#39;&quot;</span> &lt;&lt; endl;
<a name="l01952"></a>01952                 }
<a name="l01953"></a>01953 
<a name="l01954"></a>01954                 <span class="comment">// no X-KDE-NativeExtension</span>
<a name="l01955"></a>01955                 <span class="keywordflow">if</span> (d-&gt;extension.isEmpty ())
<a name="l01956"></a>01956                 {
<a name="l01957"></a>01957                     d-&gt;extension = getExtensionFromPatternList (mime-&gt;patterns ()).lower ();
<a name="l01958"></a>01958                     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tsetMimeFilter-style: pattern ext=\&#39;&quot;</span>
<a name="l01959"></a>01959                                          &lt;&lt; d-&gt;extension &lt;&lt; <span class="stringliteral">&quot;\&#39;&quot;</span> &lt;&lt; endl;
<a name="l01960"></a>01960                 }
<a name="l01961"></a>01961             }
<a name="l01962"></a>01962         }
<a name="l01963"></a>01963 
<a name="l01964"></a>01964 
<a name="l01965"></a>01965         <span class="comment">//</span>
<a name="l01966"></a>01966         <span class="comment">// GUI: checkbox</span>
<a name="l01967"></a>01967         <span class="comment">//</span>
<a name="l01968"></a>01968 
<a name="l01969"></a>01969         <a class="codeRef" href="qstring.html">QString</a> whatsThisExtension;
<a name="l01970"></a>01970         <span class="keywordflow">if</span> (!d-&gt;extension.isEmpty ())
<a name="l01971"></a>01971         {
<a name="l01972"></a>01972             <span class="comment">// remember: sync any changes to the string with below</span>
<a name="l01973"></a>01973             d-&gt;autoSelectExtCheckBox-&gt;setText (i18n (<span class="stringliteral">&quot;Automatically select filename e&amp;xtension (%1)&quot;</span>).arg (d-&gt;extension));
<a name="l01974"></a>01974             whatsThisExtension = i18n (<span class="stringliteral">&quot;the extension &lt;b&gt;%1&lt;/b&gt;&quot;</span>).<a class="codeRef" href="qstring.html#arg">arg</a> (d-&gt;extension);
<a name="l01975"></a>01975 
<a name="l01976"></a>01976             d-&gt;autoSelectExtCheckBox-&gt;setEnabled (<span class="keyword">true</span>);
<a name="l01977"></a>01977             d-&gt;autoSelectExtCheckBox-&gt;setChecked (d-&gt;autoSelectExtChecked);
<a name="l01978"></a>01978         }
<a name="l01979"></a>01979         <span class="keywordflow">else</span>
<a name="l01980"></a>01980         {
<a name="l01981"></a>01981             <span class="comment">// remember: sync any changes to the string with above</span>
<a name="l01982"></a>01982             d-&gt;autoSelectExtCheckBox-&gt;setText (i18n (<span class="stringliteral">&quot;Automatically select filename e&amp;xtension&quot;</span>));
<a name="l01983"></a>01983             whatsThisExtension = i18n (<span class="stringliteral">&quot;a suitable extension&quot;</span>);
<a name="l01984"></a>01984 
<a name="l01985"></a>01985             d-&gt;autoSelectExtCheckBox-&gt;setChecked (<span class="keyword">false</span>);
<a name="l01986"></a>01986             d-&gt;autoSelectExtCheckBox-&gt;setEnabled (<span class="keyword">false</span>);
<a name="l01987"></a>01987         }
<a name="l01988"></a>01988 
<a name="l01989"></a>01989         <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> locationLabelText = stripUndisplayable (d-&gt;locationLabel-&gt;text ());
<a name="l01990"></a>01990         <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> filterLabelText = stripUndisplayable (d-&gt;filterLabel-&gt;text ());
<a name="l01991"></a>01991         <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a> (d-&gt;autoSelectExtCheckBox,
<a name="l01992"></a>01992             <span class="stringliteral">&quot;&lt;qt&gt;&quot;</span> +
<a name="l01993"></a>01993                 i18n (
<a name="l01994"></a>01994                   <span class="stringliteral">&quot;This option enables some convenient features for &quot;</span>
<a name="l01995"></a>01995                   <span class="stringliteral">&quot;saving files with extensions:&lt;br&gt;&quot;</span>
<a name="l01996"></a>01996                   <span class="stringliteral">&quot;&lt;ol&gt;&quot;</span>
<a name="l01997"></a>01997                     <span class="stringliteral">&quot;&lt;li&gt;Any extension specified in the &lt;b&gt;%1&lt;/b&gt; text &quot;</span>
<a name="l01998"></a>01998                     <span class="stringliteral">&quot;area will be updated if you change the file type &quot;</span>
<a name="l01999"></a>01999                     <span class="stringliteral">&quot;to save in.&lt;br&gt;&quot;</span>
<a name="l02000"></a>02000                     <span class="stringliteral">&quot;&lt;br&gt;&lt;/li&gt;&quot;</span>
<a name="l02001"></a>02001                     <span class="stringliteral">&quot;&lt;li&gt;If no extension is specified in the &lt;b&gt;%2&lt;/b&gt; &quot;</span>
<a name="l02002"></a>02002                     <span class="stringliteral">&quot;text area when you click &quot;</span>
<a name="l02003"></a>02003                     <span class="stringliteral">&quot;&lt;b&gt;Save&lt;/b&gt;, %3 will be added to the end of the &quot;</span>
<a name="l02004"></a>02004                     <span class="stringliteral">&quot;filename (if the filename does not already exist). &quot;</span>
<a name="l02005"></a>02005                     <span class="stringliteral">&quot;This extension is based on the file type that you &quot;</span>
<a name="l02006"></a>02006                     <span class="stringliteral">&quot;have chosen to save in.&lt;br&gt;&quot;</span>
<a name="l02007"></a>02007                     <span class="stringliteral">&quot;&lt;br&gt;&quot;</span>
<a name="l02008"></a>02008                     <span class="stringliteral">&quot;If you do not want KDE to supply an extension for the &quot;</span>
<a name="l02009"></a>02009                     <span class="stringliteral">&quot;filename, you can either turn this option off or you &quot;</span>
<a name="l02010"></a>02010                     <span class="stringliteral">&quot;can suppress it by adding a period (.) to the end of &quot;</span>
<a name="l02011"></a>02011                     <span class="stringliteral">&quot;the filename (the period will be automatically &quot;</span>
<a name="l02012"></a>02012                     <span class="stringliteral">&quot;removed).&quot;</span>
<a name="l02013"></a>02013                     <span class="stringliteral">&quot;&lt;/li&gt;&quot;</span>
<a name="l02014"></a>02014                   <span class="stringliteral">&quot;&lt;/ol&gt;&quot;</span>
<a name="l02015"></a>02015                   <span class="stringliteral">&quot;If unsure, keep this option enabled as it makes your &quot;</span>
<a name="l02016"></a>02016                   <span class="stringliteral">&quot;files more manageable.&quot;</span>
<a name="l02017"></a>02017                     )
<a name="l02018"></a>02018                 .arg (locationLabelText)
<a name="l02019"></a>02019                 .arg (locationLabelText)
<a name="l02020"></a>02020                 .arg (whatsThisExtension)
<a name="l02021"></a>02021             + <span class="stringliteral">&quot;&lt;/qt&gt;&quot;</span>
<a name="l02022"></a>02022             );
<a name="l02023"></a>02023 
<a name="l02024"></a>02024         d-&gt;autoSelectExtCheckBox-&gt;show ();
<a name="l02025"></a>02025 
<a name="l02026"></a>02026 
<a name="l02027"></a>02027         <span class="comment">// update the current filename&#39;s extension</span>
<a name="l02028"></a>02028         updateLocationEditExtension (lastExtension);
<a name="l02029"></a>02029     }
<a name="l02030"></a>02030     <span class="comment">// Automatically Select Extension not valid</span>
<a name="l02031"></a>02031     <span class="keywordflow">else</span>
<a name="l02032"></a>02032     {
<a name="l02033"></a>02033         d-&gt;autoSelectExtCheckBox-&gt;setChecked (<span class="keyword">false</span>);
<a name="l02034"></a>02034         d-&gt;autoSelectExtCheckBox-&gt;hide ();
<a name="l02035"></a>02035     }
<a name="l02036"></a>02036 }
<a name="l02037"></a>02037 
<a name="l02038"></a>02038 <span class="comment">// Updates the extension of the filename specified in locationEdit if the</span>
<a name="l02039"></a>02039 <span class="comment">// Automatically Select Extension feature is enabled.</span>
<a name="l02040"></a>02040 <span class="comment">// (this prevents you from accidently saving &quot;file.kwd&quot; as RTF, for example)</span>
<a name="l02041"></a>02041 <span class="keywordtype">void</span> KFileDialog::updateLocationEditExtension (<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;lastExtension)
<a name="l02042"></a>02042 {
<a name="l02043"></a>02043     <span class="keywordflow">if</span> (!d-&gt;autoSelectExtCheckBox-&gt;isChecked () || d-&gt;extension.isEmpty ())
<a name="l02044"></a>02044         <span class="keywordflow">return</span>;
<a name="l02045"></a>02045 
<a name="l02046"></a>02046     <a class="codeRef" href="qstring.html">QString</a> urlStr = locationEdit-&gt;currentText ();
<a name="l02047"></a>02047     <span class="keywordflow">if</span> (urlStr.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a> ())
<a name="l02048"></a>02048         <span class="keywordflow">return</span>;
<a name="l02049"></a>02049 
<a name="l02050"></a>02050     KURL url = <a class="code" href="classKFileDialog.html#ac22fc863a7a20da581a480bd7b9f67eb" title="Returns the absolute version of the URL specified in locationEdit.">getCompleteURL</a> (urlStr);
<a name="l02051"></a>02051     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;updateLocationEditExtension (&quot;</span> &lt;&lt; url &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;
<a name="l02052"></a>02052 
<a name="l02053"></a>02053     <span class="keyword">const</span> <span class="keywordtype">int</span> fileNameOffset = urlStr.<a class="codeRef" href="qstring.html#findRev">findRev</a> (<span class="charliteral">&#39;/&#39;</span>) + 1;
<a name="l02054"></a>02054     <a class="codeRef" href="qstring.html">QString</a> fileName = urlStr.<a class="codeRef" href="qstring.html#mid">mid</a> (fileNameOffset);
<a name="l02055"></a>02055 
<a name="l02056"></a>02056     <span class="keyword">const</span> <span class="keywordtype">int</span> dot = fileName.<a class="codeRef" href="qstring.html#findRev">findRev</a> (<span class="charliteral">&#39;.&#39;</span>);
<a name="l02057"></a>02057     <span class="keyword">const</span> <span class="keywordtype">int</span> len = fileName.<a class="codeRef" href="qstring.html#length">length</a> ();
<a name="l02058"></a>02058     <span class="keywordflow">if</span> (dot &gt; 0 &amp;&amp; <span class="comment">// has an extension already and it&#39;s not a hidden file</span>
<a name="l02059"></a>02059                    <span class="comment">// like &quot;.hidden&quot; (but we do accept &quot;.hidden.ext&quot;)</span>
<a name="l02060"></a>02060         dot != len - 1 <span class="comment">// and not deliberately suppressing extension</span>
<a name="l02061"></a>02061     )
<a name="l02062"></a>02062     {
<a name="l02063"></a>02063         <span class="comment">// exists?</span>
<a name="l02064"></a>02064         KIO::UDSEntry t;
<a name="l02065"></a>02065         <span class="keywordflow">if</span> (KIO::NetAccess::stat (url, t, topLevelWidget()))
<a name="l02066"></a>02066         {
<a name="l02067"></a>02067             kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tfile exists&quot;</span> &lt;&lt; endl;
<a name="l02068"></a>02068 
<a name="l02069"></a>02069             <span class="keywordflow">if</span> (isDirectory (t))
<a name="l02070"></a>02070             {
<a name="l02071"></a>02071                 kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tisDir - won&#39;t alter extension&quot;</span> &lt;&lt; endl;
<a name="l02072"></a>02072                 <span class="keywordflow">return</span>;
<a name="l02073"></a>02073             }
<a name="l02074"></a>02074 
<a name="l02075"></a>02075             <span class="comment">// --- fall through ---</span>
<a name="l02076"></a>02076         }
<a name="l02077"></a>02077 
<a name="l02078"></a>02078 
<a name="l02079"></a>02079         <span class="comment">//</span>
<a name="l02080"></a>02080         <span class="comment">// try to get rid of the current extension</span>
<a name="l02081"></a>02081         <span class="comment">//</span>
<a name="l02082"></a>02082 
<a name="l02083"></a>02083         <span class="comment">// catch &quot;double extensions&quot; like &quot;.tar.gz&quot;</span>
<a name="l02084"></a>02084         <span class="keywordflow">if</span> (lastExtension.<a class="codeRef" href="qstring.html#length">length</a> () &amp;&amp; fileName.<a class="codeRef" href="qstring.html#endsWith">endsWith</a> (lastExtension))
<a name="l02085"></a>02085             fileName.<a class="codeRef" href="qstring.html#truncate">truncate</a> (len - lastExtension.<a class="codeRef" href="qstring.html#length">length</a> ());
<a name="l02086"></a>02086         <span class="comment">// can only handle &quot;single extensions&quot;</span>
<a name="l02087"></a>02087         <span class="keywordflow">else</span>
<a name="l02088"></a>02088             fileName.<a class="codeRef" href="qstring.html#truncate">truncate</a> (dot);
<a name="l02089"></a>02089 
<a name="l02090"></a>02090         <span class="comment">// add extension</span>
<a name="l02091"></a>02091         <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> newText = urlStr.<a class="codeRef" href="qstring.html#left">left</a> (fileNameOffset) + fileName + d-&gt;extension;
<a name="l02092"></a>02092         <span class="keywordflow">if</span> ( newText != locationEdit-&gt;currentText() )
<a name="l02093"></a>02093         {
<a name="l02094"></a>02094             locationEdit-&gt;setCurrentText (urlStr.<a class="codeRef" href="qstring.html#left">left</a> (fileNameOffset) + fileName + d-&gt;extension);
<a name="l02095"></a>02095             locationEdit-&gt;lineEdit()-&gt;setEdited (<span class="keyword">true</span>);
<a name="l02096"></a>02096         }
<a name="l02097"></a>02097     }
<a name="l02098"></a>02098 }
<a name="l02099"></a>02099 
<a name="l02100"></a>02100 <span class="comment">// Updates the filter if the extension of the filename specified in locationEdit is changed</span>
<a name="l02101"></a>02101 <span class="comment">// (this prevents you from accidently saving &quot;file.kwd&quot; as RTF, for example)</span>
<a name="l02102"></a>02102 <span class="keywordtype">void</span> KFileDialog::updateFilter ()
<a name="l02103"></a>02103 {
<a name="l02104"></a>02104     <span class="keywordflow">if</span> ((<a class="code" href="classKFileDialog.html#a85c71ce67e27afd3877694ef8ebcc045">operationMode</a>() == Saving) &amp;&amp; (<a class="code" href="classKFileDialog.html#a5f75b2ba669b76a3932703e3dd33476d" title="Returns the mode of the filedialog.">mode</a>() &amp; KFile::File) ) {
<a name="l02105"></a>02105         <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> urlStr = locationEdit-&gt;currentText ();
<a name="l02106"></a>02106         <span class="keywordflow">if</span> (urlStr.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a> ())
<a name="l02107"></a>02107             <span class="keywordflow">return</span>;
<a name="l02108"></a>02108 
<a name="l02109"></a>02109         KMimeType::Ptr mime = KMimeType::findByPath(urlStr, 0, <span class="keyword">true</span>);
<a name="l02110"></a>02110         <span class="keywordflow">if</span> (mime &amp;&amp; mime-&gt;name() != KMimeType::defaultMimeType()) {
<a name="l02111"></a>02111             <span class="keywordflow">if</span> (filterWidget-&gt;currentFilter() != mime-&gt;name() &amp;&amp;
<a name="l02112"></a>02112                 filterWidget-&gt;filters.findIndex(mime-&gt;name()) != -1) {
<a name="l02113"></a>02113                 filterWidget-&gt;setCurrentFilter(mime-&gt;name());
<a name="l02114"></a>02114             }
<a name="l02115"></a>02115         }
<a name="l02116"></a>02116     }
<a name="l02117"></a>02117 }
<a name="l02118"></a>02118 
<a name="l02119"></a>02119 <span class="comment">// applies only to a file that doesn&#39;t already exist</span>
<a name="l02120"></a>02120 <span class="keywordtype">void</span> KFileDialog::appendExtension (KURL &amp;url)
<a name="l02121"></a>02121 {
<a name="l02122"></a>02122     <span class="keywordflow">if</span> (!d-&gt;autoSelectExtCheckBox-&gt;isChecked () || d-&gt;extension.isEmpty ())
<a name="l02123"></a>02123         <span class="keywordflow">return</span>;
<a name="l02124"></a>02124 
<a name="l02125"></a>02125     <a class="codeRef" href="qstring.html">QString</a> fileName = url.fileName ();
<a name="l02126"></a>02126     <span class="keywordflow">if</span> (fileName.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a> ())
<a name="l02127"></a>02127         <span class="keywordflow">return</span>;
<a name="l02128"></a>02128 
<a name="l02129"></a>02129     kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;appendExtension(&quot;</span> &lt;&lt; url &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;
<a name="l02130"></a>02130 
<a name="l02131"></a>02131     <span class="keyword">const</span> <span class="keywordtype">int</span> len = fileName.<a class="codeRef" href="qstring.html#length">length</a> ();
<a name="l02132"></a>02132     <span class="keyword">const</span> <span class="keywordtype">int</span> dot = fileName.<a class="codeRef" href="qstring.html#findRev">findRev</a> (<span class="charliteral">&#39;.&#39;</span>);
<a name="l02133"></a>02133 
<a name="l02134"></a>02134     <span class="keyword">const</span> <span class="keywordtype">bool</span> suppressExtension = (dot == len - 1);
<a name="l02135"></a>02135     <span class="keyword">const</span> <span class="keywordtype">bool</span> unspecifiedExtension = (dot &lt;= 0);
<a name="l02136"></a>02136 
<a name="l02137"></a>02137     <span class="comment">// don&#39;t KIO::NetAccess::Stat if unnecessary</span>
<a name="l02138"></a>02138     <span class="keywordflow">if</span> (!(suppressExtension || unspecifiedExtension))
<a name="l02139"></a>02139         <span class="keywordflow">return</span>;
<a name="l02140"></a>02140 
<a name="l02141"></a>02141     <span class="comment">// exists?</span>
<a name="l02142"></a>02142     KIO::UDSEntry t;
<a name="l02143"></a>02143     <span class="keywordflow">if</span> (KIO::NetAccess::stat (url, t, topLevelWidget()))
<a name="l02144"></a>02144     {
<a name="l02145"></a>02145         kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tfile exists - won&#39;t append extension&quot;</span> &lt;&lt; endl;
<a name="l02146"></a>02146         <span class="keywordflow">return</span>;
<a name="l02147"></a>02147     }
<a name="l02148"></a>02148 
<a name="l02149"></a>02149     <span class="comment">// suppress automatically append extension?</span>
<a name="l02150"></a>02150     <span class="keywordflow">if</span> (suppressExtension)
<a name="l02151"></a>02151     {
<a name="l02152"></a>02152         <span class="comment">//</span>
<a name="l02153"></a>02153         <span class="comment">// Strip trailing dot</span>
<a name="l02154"></a>02154         <span class="comment">// This allows lazy people to have autoSelectExtCheckBox-&gt;isChecked</span>
<a name="l02155"></a>02155         <span class="comment">// but don&#39;t want a file extension to be appended</span>
<a name="l02156"></a>02156         <span class="comment">// e.g. &quot;README.&quot; will make a file called &quot;README&quot;</span>
<a name="l02157"></a>02157         <span class="comment">//</span>
<a name="l02158"></a>02158         <span class="comment">// If you really want a name like &quot;README.&quot;, then type &quot;README..&quot;</span>
<a name="l02159"></a>02159         <span class="comment">// and the trailing dot will be removed (or just stop being lazy and</span>
<a name="l02160"></a>02160         <span class="comment">// turn off this feature so that you can type &quot;README.&quot;)</span>
<a name="l02161"></a>02161         <span class="comment">//</span>
<a name="l02162"></a>02162         kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tstrip trailing dot&quot;</span> &lt;&lt; endl;
<a name="l02163"></a>02163         url.setFileName (fileName.<a class="codeRef" href="qstring.html#left">left</a> (len - 1));
<a name="l02164"></a>02164     }
<a name="l02165"></a>02165     <span class="comment">// evilmatically append extension :) if the user hasn&#39;t specified one</span>
<a name="l02166"></a>02166     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (unspecifiedExtension)
<a name="l02167"></a>02167     {
<a name="l02168"></a>02168         kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tappending extension \&#39;&quot;</span> &lt;&lt; d-&gt;extension &lt;&lt; <span class="stringliteral">&quot;\&#39;...&quot;</span> &lt;&lt; endl;
<a name="l02169"></a>02169         url.setFileName (fileName + d-&gt;extension);
<a name="l02170"></a>02170         kdDebug (kfile_area) &lt;&lt; <span class="stringliteral">&quot;\tsaving as \&#39;&quot;</span> &lt;&lt; url &lt;&lt; <span class="stringliteral">&quot;\&#39;&quot;</span> &lt;&lt; endl;
<a name="l02171"></a>02171     }
<a name="l02172"></a>02172 }
<a name="l02173"></a>02173 
<a name="l02174"></a>02174 
<a name="l02175"></a>02175 <span class="comment">// adds the selected files/urls to &#39;recent documents&#39;</span>
<a name="l02176"></a>02176 <span class="keywordtype">void</span> KFileDialog::addToRecentDocuments()
<a name="l02177"></a>02177 {
<a name="l02178"></a>02178     <span class="keywordtype">int</span> m = ops-&gt;<a class="code" href="classKDirOperator.html#ac079a943fb5e1f96cd749de13947a994">mode</a>();
<a name="l02179"></a>02179 
<a name="l02180"></a>02180     <span class="keywordflow">if</span> ( m &amp; KFile::LocalOnly ) {
<a name="l02181"></a>02181         <a class="codeRef" href="qstringlist.html">QStringList</a> files = <a class="code" href="classKFileDialog.html#a8640b176548c47309c98ea246e4f8a29" title="Returns a list of all selected local files.">selectedFiles</a>();
<a name="l02182"></a>02182         QStringList::ConstIterator it = files.begin();
<a name="l02183"></a>02183         <span class="keywordflow">for</span> ( ; it != files.end(); ++it )
<a name="l02184"></a>02184             <a class="code" href="classKRecentDocument.html#aff82f3d6f9f39010226ec0899b9e26ae" title="Add a new item to the Recent Document menu.">KRecentDocument::add</a>( *it );
<a name="l02185"></a>02185     }
<a name="l02186"></a>02186 
<a name="l02187"></a>02187     <span class="keywordflow">else</span> { <span class="comment">// urls</span>
<a name="l02188"></a>02188         KURL::List urls = <a class="code" href="classKFileDialog.html#a8b423a101f59dcd6b65a9a1a6c1d102c">selectedURLs</a>();
<a name="l02189"></a>02189         KURL::List::ConstIterator it = urls.begin();
<a name="l02190"></a>02190         <span class="keywordflow">for</span> ( ; it != urls.end(); ++it ) {
<a name="l02191"></a>02191             <span class="keywordflow">if</span> ( (*it).isValid() )
<a name="l02192"></a>02192                 <a class="code" href="classKRecentDocument.html#aff82f3d6f9f39010226ec0899b9e26ae" title="Add a new item to the Recent Document menu.">KRecentDocument::add</a>( *it );
<a name="l02193"></a>02193         }
<a name="l02194"></a>02194     }
<a name="l02195"></a>02195 }
<a name="l02196"></a>02196 
<a name="l02197"></a><a class="code" href="classKFileDialog.html#adeecd11a3cab8b910ec9798c3052de91">02197</a> KActionCollection * <a class="code" href="classKFileDialog.html#adeecd11a3cab8b910ec9798c3052de91">KFileDialog::actionCollection</a>()<span class="keyword"> const</span>
<a name="l02198"></a>02198 <span class="keyword"></span>{
<a name="l02199"></a>02199     <span class="keywordflow">return</span> ops-&gt;<a class="code" href="classKDirOperator.html#a87d007bd417e8ef15cf4596c43020be4" title="an accessor to a collection of all available Actions.">actionCollection</a>();
<a name="l02200"></a>02200 }
<a name="l02201"></a>02201 
<a name="l02202"></a><a class="code" href="classKFileDialog.html#a90108ff857a8942bd846c6a20c3bc3b6">02202</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a90108ff857a8942bd846c6a20c3bc3b6" title="Reimplemented to animate the cancel button.">KFileDialog::keyPressEvent</a>( <a class="codeRef" href="qkeyevent.html">QKeyEvent</a> *e )
<a name="l02203"></a>02203 {
<a name="l02204"></a>02204     <span class="keywordflow">if</span> ( e-&gt;<a class="codeRef" href="qkeyevent.html#key">key</a>() == Key_Escape )
<a name="l02205"></a>02205     {
<a name="l02206"></a>02206         e-&gt;<a class="codeRef" href="qkeyevent.html#accept">accept</a>();
<a name="l02207"></a>02207         d-&gt;cancelButton-&gt;animateClick();
<a name="l02208"></a>02208     }
<a name="l02209"></a>02209     <span class="keywordflow">else</span>
<a name="l02210"></a>02210         <a class="code" href="classKFileDialog.html#a90108ff857a8942bd846c6a20c3bc3b6" title="Reimplemented to animate the cancel button.">KDialogBase::keyPressEvent</a>( e );
<a name="l02211"></a>02211 }
<a name="l02212"></a>02212 
<a name="l02213"></a><a class="code" href="classKFileDialog.html#a15823cbc52705429d31c892647a5958f">02213</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#a15823cbc52705429d31c892647a5958f">KFileDialog::toggleSpeedbar</a>( <span class="keywordtype">bool</span> show )
<a name="l02214"></a>02214 {
<a name="l02215"></a>02215     <span class="keywordflow">if</span> ( show )
<a name="l02216"></a>02216     {
<a name="l02217"></a>02217         <span class="keywordflow">if</span> ( !d-&gt;urlBar )
<a name="l02218"></a>02218             initSpeedbar();
<a name="l02219"></a>02219 
<a name="l02220"></a>02220         d-&gt;urlBar-&gt;show();
<a name="l02221"></a>02221 
<a name="l02222"></a>02222         <span class="comment">// check to see if they have a home item defined, if not show the home button</span>
<a name="l02223"></a>02223         <a class="code" href="classKURLBarItem.html" title="An item to be used in KURLBar / KURLBarListBox.">KURLBarItem</a> *urlItem = <span class="keyword">static_cast&lt;</span><a class="code" href="classKURLBarItem.html" title="An item to be used in KURLBar / KURLBarListBox.">KURLBarItem</a>*<span class="keyword">&gt;</span>( d-&gt;urlBar-&gt;listBox()-&gt;firstItem() );
<a name="l02224"></a>02224         KURL homeURL;
<a name="l02225"></a>02225         homeURL.setPath( <a class="codeRef" href="qdir.html#homeDirPath">QDir::homeDirPath</a>() );
<a name="l02226"></a>02226         <span class="keywordflow">while</span> ( urlItem )
<a name="l02227"></a>02227         {
<a name="l02228"></a>02228             <span class="keywordflow">if</span> ( homeURL.equals( urlItem-&gt;<a class="code" href="classKURLBarItem.html#a2efa9aac9246658f46283a66e7e2643d" title="returns the url of this item.">url</a>(), true ) )
<a name="l02229"></a>02229             {
<a name="l02230"></a>02230                 ops-&gt;<a class="code" href="classKDirOperator.html#a87d007bd417e8ef15cf4596c43020be4" title="an accessor to a collection of all available Actions.">actionCollection</a>()-&gt;action( <span class="stringliteral">&quot;home&quot;</span> )-&gt;unplug( toolbar );
<a name="l02231"></a>02231                 <span class="keywordflow">break</span>;
<a name="l02232"></a>02232             }
<a name="l02233"></a>02233 
<a name="l02234"></a>02234             urlItem = <span class="keyword">static_cast&lt;</span><a class="code" href="classKURLBarItem.html" title="An item to be used in KURLBar / KURLBarListBox.">KURLBarItem</a>*<span class="keyword">&gt;</span>( urlItem-&gt;next() );
<a name="l02235"></a>02235         }
<a name="l02236"></a>02236     }
<a name="l02237"></a>02237     <span class="keywordflow">else</span>
<a name="l02238"></a>02238     {
<a name="l02239"></a>02239         <span class="keywordflow">if</span> (d-&gt;urlBar)
<a name="l02240"></a>02240             d-&gt;urlBar-&gt;hide();
<a name="l02241"></a>02241 
<a name="l02242"></a>02242         <span class="keywordflow">if</span> ( !ops-&gt;<a class="code" href="classKDirOperator.html#a87d007bd417e8ef15cf4596c43020be4" title="an accessor to a collection of all available Actions.">actionCollection</a>()-&gt;action( <span class="stringliteral">&quot;home&quot;</span> )-&gt;isPlugged( toolbar ) )
<a name="l02243"></a>02243             ops-&gt;<a class="code" href="classKDirOperator.html#a87d007bd417e8ef15cf4596c43020be4" title="an accessor to a collection of all available Actions.">actionCollection</a>()-&gt;action( <span class="stringliteral">&quot;home&quot;</span> )-&gt;plug( toolbar, 3 );
<a name="l02244"></a>02244     }
<a name="l02245"></a>02245 
<a name="l02246"></a>02246     <span class="keyword">static_cast&lt;</span>KToggleAction *<span class="keyword">&gt;</span>(<a class="code" href="classKFileDialog.html#adeecd11a3cab8b910ec9798c3052de91">actionCollection</a>()-&gt;action(<span class="stringliteral">&quot;toggleSpeedbar&quot;</span>))-&gt;setChecked( show );
<a name="l02247"></a>02247 }
<a name="l02248"></a>02248 
<a name="l02249"></a><a class="code" href="classKFileDialog.html#af58b2304c13a620b2db59076da66da8b">02249</a> <span class="keywordtype">void</span> <a class="code" href="classKFileDialog.html#af58b2304c13a620b2db59076da66da8b">KFileDialog::toggleBookmarks</a>(<span class="keywordtype">bool</span> show)
<a name="l02250"></a>02250 {
<a name="l02251"></a>02251     <span class="keywordflow">if</span> (show)
<a name="l02252"></a>02252     {
<a name="l02253"></a>02253         <span class="keywordflow">if</span> (d-&gt;bookmarkHandler)
<a name="l02254"></a>02254         {
<a name="l02255"></a>02255             <span class="keywordflow">return</span>;
<a name="l02256"></a>02256         }
<a name="l02257"></a>02257 
<a name="l02258"></a>02258         d-&gt;bookmarkHandler = <span class="keyword">new</span> KFileBookmarkHandler( <span class="keyword">this</span> );
<a name="l02259"></a>02259         connect( d-&gt;bookmarkHandler, SIGNAL( openURL( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )),
<a name="l02260"></a>02260                     SLOT( enterURL( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; )));
<a name="l02261"></a>02261 
<a name="l02262"></a>02262         toolbar-&gt;insertButton(<a class="codeRef" href="qstring.html#fromLatin1">QString::fromLatin1</a>(<span class="stringliteral">&quot;bookmark&quot;</span>),
<a name="l02263"></a>02263                               (<span class="keywordtype">int</span>)HOTLIST_BUTTON, <span class="keyword">true</span>,
<a name="l02264"></a>02264                               i18n(<span class="stringliteral">&quot;Bookmarks&quot;</span>), 5);
<a name="l02265"></a>02265         toolbar-&gt;getButton(HOTLIST_BUTTON)-&gt;setPopup(d-&gt;bookmarkHandler-&gt;menu(),
<a name="l02266"></a>02266                                                      <span class="keyword">true</span>);
<a name="l02267"></a>02267         <a class="codeRef" href="qwhatsthis.html#add">QWhatsThis::add</a>(toolbar-&gt;getButton(HOTLIST_BUTTON),
<a name="l02268"></a>02268                         i18n(<span class="stringliteral">&quot;&lt;qt&gt;This button allows you to bookmark specific locations. &quot;</span>
<a name="l02269"></a>02269                                 <span class="stringliteral">&quot;Click on this button to open the bookmark menu where you may add, &quot;</span>
<a name="l02270"></a>02270                                 <span class="stringliteral">&quot;edit or select a bookmark.&lt;p&gt;&quot;</span>
<a name="l02271"></a>02271                                 <span class="stringliteral">&quot;These bookmarks are specific to the file dialog, but otherwise operate &quot;</span>
<a name="l02272"></a>02272                                 <span class="stringliteral">&quot;like bookmarks elsewhere in KDE.&lt;/qt&gt;&quot;</span>));
<a name="l02273"></a>02273     }
<a name="l02274"></a>02274     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;bookmarkHandler)
<a name="l02275"></a>02275     {
<a name="l02276"></a>02276         <span class="keyword">delete</span> d-&gt;bookmarkHandler;
<a name="l02277"></a>02277         d-&gt;bookmarkHandler = 0;
<a name="l02278"></a>02278         toolbar-&gt;removeItem(HOTLIST_BUTTON);
<a name="l02279"></a>02279     }
<a name="l02280"></a>02280 
<a name="l02281"></a>02281     <span class="keyword">static_cast&lt;</span>KToggleAction *<span class="keyword">&gt;</span>(<a class="code" href="classKFileDialog.html#adeecd11a3cab8b910ec9798c3052de91">actionCollection</a>()-&gt;action(<span class="stringliteral">&quot;toggleBookmarks&quot;</span>))-&gt;setChecked( show );
<a name="l02282"></a>02282 }
<a name="l02283"></a>02283 
<a name="l02284"></a><a class="code" href="classKFileDialog.html#a752c10037477dca71a06484aa6bc2781">02284</a> <span class="keywordtype">int</span> <a class="code" href="classKFileDialog.html#a752c10037477dca71a06484aa6bc2781">KFileDialog::pathComboIndex</a>()
<a name="l02285"></a>02285 {
<a name="l02286"></a>02286     <span class="keywordflow">return</span> d-&gt;m_pathComboIndex;
<a name="l02287"></a>02287 }
<a name="l02288"></a>02288 
<a name="l02289"></a>02289 <span class="comment">// static</span>
<a name="l02290"></a>02290 <span class="keywordtype">void</span> KFileDialog::initStatic()
<a name="l02291"></a>02291 {
<a name="l02292"></a>02292     <span class="keywordflow">if</span> ( lastDirectory )
<a name="l02293"></a>02293         <span class="keywordflow">return</span>;
<a name="l02294"></a>02294 
<a name="l02295"></a>02295     lastDirectory = ldd.setObject(lastDirectory, <span class="keyword">new</span> KURL());
<a name="l02296"></a>02296 }
<a name="l02297"></a>02297 
<a name="l02298"></a>02298 <span class="comment">// static</span>
<a name="l02299"></a><a class="code" href="classKFileDialog.html#aaa9cdbff18994ed30a8b3ebc2e7e5012">02299</a> KURL <a class="code" href="classKFileDialog.html#aaa9cdbff18994ed30a8b3ebc2e7e5012" title="This method implements the logic to determine the user&#39;s default directory to be listed.">KFileDialog::getStartURL</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; startDir,
<a name="l02300"></a>02300                                <a class="codeRef" href="qstring.html">QString</a>&amp; recentDirClass )
<a name="l02301"></a>02301 {
<a name="l02302"></a>02302     initStatic();
<a name="l02303"></a>02303 
<a name="l02304"></a>02304     recentDirClass = QString::null;
<a name="l02305"></a>02305     KURL ret;
<a name="l02306"></a>02306 
<a name="l02307"></a>02307     <span class="keywordtype">bool</span> useDefaultStartDir = startDir.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>();
<a name="l02308"></a>02308     <span class="keywordflow">if</span> ( !useDefaultStartDir )
<a name="l02309"></a>02309     {
<a name="l02310"></a>02310         <span class="keywordflow">if</span> (startDir[0] == <span class="charliteral">&#39;:&#39;</span>)
<a name="l02311"></a>02311         {
<a name="l02312"></a>02312             recentDirClass = startDir;
<a name="l02313"></a>02313             ret = KURL::fromPathOrURL( <a class="code" href="classKRecentDirs.html#a1d58a14171d3269ed2c82288b4ca9661" title="Returns the most recently used directory accociated with this file-class.">KRecentDirs::dir</a>(recentDirClass) );
<a name="l02314"></a>02314         }
<a name="l02315"></a>02315         <span class="keywordflow">else</span>
<a name="l02316"></a>02316         {
<a name="l02317"></a>02317             ret = KCmdLineArgs::makeURL( <a class="codeRef" href="qfile.html#encodeName">QFile::encodeName</a>(startDir) );
<a name="l02318"></a>02318             <span class="comment">// If we won&#39;t be able to list it (e.g. http), then use default</span>
<a name="l02319"></a>02319             <span class="keywordflow">if</span> ( !KProtocolInfo::supportsListing( ret ) )
<a name="l02320"></a>02320                 useDefaultStartDir = <span class="keyword">true</span>;
<a name="l02321"></a>02321         }
<a name="l02322"></a>02322     }
<a name="l02323"></a>02323 
<a name="l02324"></a>02324     <span class="keywordflow">if</span> ( useDefaultStartDir )
<a name="l02325"></a>02325     {
<a name="l02326"></a>02326         <span class="keywordflow">if</span> (lastDirectory-&gt;isEmpty()) {
<a name="l02327"></a>02327             lastDirectory-&gt;setPath(KGlobalSettings::documentPath());
<a name="l02328"></a>02328             KURL home;
<a name="l02329"></a>02329             home.setPath( <a class="codeRef" href="qdir.html#homeDirPath">QDir::homeDirPath</a>() );
<a name="l02330"></a>02330             <span class="comment">// if there is no docpath set (== home dir), we prefer the current</span>
<a name="l02331"></a>02331             <span class="comment">// directory over it. We also prefer the homedir when our CWD is</span>
<a name="l02332"></a>02332             <span class="comment">// different from our homedirectory or when the document dir</span>
<a name="l02333"></a>02333             <span class="comment">// does not exist</span>
<a name="l02334"></a>02334             <span class="keywordflow">if</span> ( lastDirectory-&gt;path(+1) == home.path(+1) ||
<a name="l02335"></a>02335                  <a class="codeRef" href="qdir.html#currentDirPath">QDir::currentDirPath</a>() != <a class="codeRef" href="qdir.html#homeDirPath">QDir::homeDirPath</a>() ||
<a name="l02336"></a>02336                  !<a class="codeRef" href="qdir.html">QDir</a>(lastDirectory-&gt;path(+1)).exists() )
<a name="l02337"></a>02337                 lastDirectory-&gt;setPath(<a class="codeRef" href="qdir.html#currentDirPath">QDir::currentDirPath</a>());
<a name="l02338"></a>02338         }
<a name="l02339"></a>02339         ret = *lastDirectory;
<a name="l02340"></a>02340     }
<a name="l02341"></a>02341 
<a name="l02342"></a>02342     <span class="keywordflow">return</span> ret;
<a name="l02343"></a>02343 }
<a name="l02344"></a>02344 
<a name="l02345"></a>02345 <span class="keywordtype">void</span> KFileDialog::setStartDir( <span class="keyword">const</span> KURL&amp; directory )
<a name="l02346"></a>02346 {
<a name="l02347"></a>02347     initStatic();
<a name="l02348"></a>02348     <span class="keywordflow">if</span> ( directory.isValid() )
<a name="l02349"></a>02349         *lastDirectory = directory;
<a name="l02350"></a>02350 }
<a name="l02351"></a>02351 
<a name="l02352"></a>02352 <span class="keywordtype">void</span> KFileDialog::setNonExtSelection()
<a name="l02353"></a>02353 {
<a name="l02354"></a>02354     <span class="comment">// Enhanced rename: Don&#39;t highlight the file extension.</span>
<a name="l02355"></a>02355     <a class="codeRef" href="qstring.html">QString</a> pattern, filename = locationEdit-&gt;currentText().stripWhiteSpace();
<a name="l02356"></a>02356     KServiceTypeFactory::self()-&gt;findFromPattern( filename, &amp;pattern );
<a name="l02357"></a>02357 
<a name="l02358"></a>02358     <span class="keywordflow">if</span> ( !pattern.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; pattern.<a class="codeRef" href="qstring.html#at">at</a>( 0 ) == <span class="charliteral">&#39;*&#39;</span> &amp;&amp; pattern.<a class="codeRef" href="qstring.html#find">find</a>( <span class="charliteral">&#39;*&#39;</span> , 1 ) == -1 )
<a name="l02359"></a>02359        locationEdit-&gt;lineEdit()-&gt;setSelection( 0, filename.<a class="codeRef" href="qstring.html#length">length</a>() - pattern.<a class="codeRef" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>().length()+1 );
<a name="l02360"></a>02360     <span class="keywordflow">else</span>
<a name="l02361"></a>02361     {
<a name="l02362"></a>02362        <span class="keywordtype">int</span> lastDot = filename.<a class="codeRef" href="qstring.html#findRev">findRev</a>( <span class="charliteral">&#39;.&#39;</span> );
<a name="l02363"></a>02363        <span class="keywordflow">if</span> ( lastDot &gt; 0 )
<a name="l02364"></a>02364           locationEdit-&gt;lineEdit()-&gt;setSelection( 0, lastDot );
<a name="l02365"></a>02365     }
<a name="l02366"></a>02366 }
<a name="l02367"></a>02367 
<a name="l02368"></a>02368 <span class="keywordtype">void</span> KFileDialog::virtual_hook( <span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keywordtype">void</span>* data )
<a name="l02369"></a>02369 { KDialogBase::virtual_hook( <span class="keywordtype">id</span>, data ); }
<a name="l02370"></a>02370 
<a name="l02371"></a>02371 
<a name="l02372"></a>02372 <span class="preprocessor">#include &quot;kfiledialog.moc&quot;</span>
</pre></div></div>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>kio/kfile</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classKApplicationPropsPlugin.html">kapplicationpropsplugin</option>,  <option value="classKBindingPropsPlugin.html">kbindingpropsplugin</option>,  <option value="classKCombiView.html">kcombiview</option>,  <option value="classKDesktopPropsPlugin.html">kdesktoppropsplugin</option>,  <option value="classKDevicePropsPlugin.html">kdevicepropsplugin</option>,  <option value="classKDirOperator.html">kdiroperator</option>,  <option value="classKDirSelectDialog.html">kdirselectdialog</option>,  <option value="classKDirSize.html">kdirsize</option>,  <option value="classKDiskFreeSp.html">kdiskfreesp</option>,  <option value="classKEncodingFileDialog.html">kencodingfiledialog</option>,  <option value="classKExecPropsPlugin.html">kexecpropsplugin</option>,  <option value="classKFile.html">kfile</option>,  <option value="classKFileDetailView.html">kfiledetailview</option>,  <option value="classKFileDialog.html">kfiledialog</option>,  <option value="classKFileIconView.html">kfileiconview</option>,  <option value="classKFileIconViewItem.html">kfileiconviewitem</option>,  <option value="classKFileListViewItem.html">kfilelistviewitem</option>,  <option value="classKFileMetaInfoWidget.html">kfilemetainfowidget</option>,  <option value="classKFileMetaPropsPlugin.html">kfilemetapropsplugin</option>,  <option value="classKFileOpenWithHandler.html">kfileopenwithhandler</option>,  <option value="classKFilePermissionsPropsPlugin.html">kfilepermissionspropsplugin</option>,  <option value="classKFilePreview.html">kfilepreview</option>,  <option value="classKFilePropsPlugin.html">kfilepropsplugin</option>,  <option value="classKFileSharePropsPlugin.html">kfilesharepropsplugin</option>,  <option value="classKFileTreeBranch.html">kfiletreebranch</option>,  <option value="classKFileTreeView.html">kfiletreeview</option>,  <option value="classKFileTreeViewItem.html">kfiletreeviewitem</option>,  <option value="classKFileView.html">kfileview</option>,  <option value="classKFileViewSignaler.html">kfileviewsignaler</option>,  <option value="classKIconButton.html">kiconbutton</option>,  <option value="classKIconCanvas.html">kiconcanvas</option>,  <option value="classKIconDialog.html">kicondialog</option>,  <option value="classKImageFilePreview.html">kimagefilepreview</option>,  <option value="classKNotifyDialog.html">knotifydialog</option>,  <option value="classKOpenWithDlg.html">kopenwithdlg</option>,  <option value="classKPreviewPropsPlugin.html">kpreviewpropsplugin</option>,  <option value="classKPreviewWidgetBase.html">kpreviewwidgetbase</option>,  <option value="classKPropertiesDialog.html">kpropertiesdialog</option>,  <option value="classKPropsDlgPlugin.html">kpropsdlgplugin</option>,  <option value="classKRecentDirs.html">krecentdirs</option>,  <option value="classKRecentDocument.html">krecentdocument</option>,  <option value="classKURLBar.html">kurlbar</option>,  <option value="classKURLBarItem.html">kurlbaritem</option>,  <option value="classKURLBarItemDialog.html">kurlbaritemdialog</option>,  <option value="classKURLBarListBox.html">kurlbarlistbox</option>,  <option value="classKURLComboBox.html">kurlcombobox</option>,  <option value="classKURLComboRequester.html">kurlcomborequester</option>,  <option value="classKURLPropsPlugin.html">kurlpropsplugin</option>,  <option value="classKURLRequester.html">kurlrequester</option>,  <option value="classKURLRequesterDlg.html">kurlrequesterdlg</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../../arts/html/index.html">arts</a></li><li><a href="../../../dcop/html/index.html">dcop</a></li><li><a href="../../../dnssd/html/index.html">dnssd</a></li><li><a href="../../../interfaces/html/index.html">interfaces</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../../interfaces/kimproxy/library/html/index.html">library</a></li><li>&nbsp;&nbsp;<a href="../../../interfaces/kspeech/html/index.html">kspeech</a></li><li>&nbsp;&nbsp;<a href="../../../interfaces/ktexteditor/html/index.html">ktexteditor</a></li><li><a href="../../../kabc/html/index.html">kabc</a></li><li><a href="../../../kate/html/index.html">kate</a></li><li><a href="../../../kcmshell/html/index.html">kcmshell</a></li><li><a href="../../../kdecore/html/index.html">kdecore</a></li><li><a href="../../../kded/html/index.html">kded</a></li><li><a href="../../../kdefx/html/index.html">kdefx</a></li><li><a href="../../../kdeprint/html/index.html">kdeprint</a></li><li><a href="../../../kdesu/html/index.html">kdesu</a></li><li><a href="../../../kdeui/html/index.html">kdeui</a></li><li><a href="../../../kdoctools/html/index.html">kdoctools</a></li><li><a href="../../../khtml/html/index.html">khtml</a></li><li><a href="../../../kimgio/html/index.html">kimgio</a></li><li><a href="../../../kinit/html/index.html">kinit</a></li><li><a href="../../../kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../../kio/bookmarks/html/index.html">bookmarks</a></li><li>&nbsp;&nbsp;<a href="../../../kio/httpfilter/html/index.html">httpfilter</a></li><li>&nbsp;&nbsp;<a href="../../../kio/kfile/html/index.html">kfile</a></li><li>&nbsp;&nbsp;<a href="../../../kio/kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../../kio/kioexec/html/index.html">kioexec</a></li><li>&nbsp;&nbsp;<a href="../../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li>&nbsp;&nbsp;<a href="../../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../../kioslave/html/index.html">kioslave</a></li><li>&nbsp;&nbsp;<a href="../../../kioslave/http/html/index.html">http</a></li><li><a href="../../../kjs/html/index.html">kjs</a></li><li><a href="../../../kmdi/html/index.html">kmdi</a></li><li>&nbsp;&nbsp;<a href="../../../kmdi/kmdi/html/index.html">kmdi</a></li><li><a href="../../../knewstuff/html/index.html">knewstuff</a></li><li><a href="../../../kparts/html/index.html">kparts</a></li><li><a href="../../../kresources/html/index.html">kresources</a></li><li><a href="../../../kspell2/html/index.html">kspell2</a></li><li><a href="../../../kunittest/html/index.html">kunittest</a></li><li><a href="../../../kutils/html/index.html">kutils</a></li><li><a href="../../../kwallet/html/index.html">kwallet</a></li><li><a href="../../../libkmid/html/index.html">libkmid</a></li><li><a href="../../../libkscreensaver/html/index.html">libkscreensaver</a></li>
</ul></div></div>


        </td>
</tr>
</table>

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>