25#include "KexiStartupFileDialog.h"
26#include <kexiutils/utils.h>
28#include <kiconloader.h>
30#include <tderecentdirs.h>
32#include <tqobjectlist.h>
33#include <tqlineedit.h>
35#include <win/win32_utils.h>
38class KexiStartupFileDialogBasePrivate
41 KexiStartupFileDialogBasePrivate()
45 TQStringList mimetypes;
48KexiStartupFileDialogBase::KexiStartupFileDialogBase(
49 const TQString & dirName,
const TQString & filter,
50 TQWidget * parent,
const char * name,
bool modal )
51 : TQFileDialog( realStartDir(dirName), filter, parent, name, modal )
52 , d(new KexiStartupFileDialogBasePrivate())
55 TQString _dirName = dirPath();
58 if (_dirName.isEmpty())
59 _dirName = TDEGlobalSettings::documentPath();
61 init(_dirName, filter, parent);
64 TQObjectList *l = queryList(
"TQPushButton",
"OK",
false );
65 m_okBtn =
dynamic_cast<TQPushButton*
>(l->first());
67 l = queryList(
"TQLineEdit",
"name/filter editor",
false );
68 m_lineEdit =
dynamic_cast<TQLineEdit*
>(l->first());
74KexiStartupFileDialogBase::~KexiStartupFileDialogBase()
78void KexiStartupFileDialogBase::init(
const TQString& startDir,
const TQString& filter, TQWidget* widget)
86 setMode(KFile::File | KFile::ExistingOnly);
87 setIcon( TDEGlobal::iconLoader()->loadIcon(
"document-open", TDEIcon::Desktop) );
88 setDir(TQDir(startDir));
342void KexiStartupFileDialogBase::clearFilter()
345 TQFileDialog::setFilter(
"");
349 updateAutoSelectExtension ();
352KFile::Mode KexiStartupFileDialogBase::mode()
const
357void KexiStartupFileDialogBase::setMode( KFile::Mode m )
361 TQFileDialog::Mode qm = (TQFileDialog::Mode)0;
362 if (m & KFile::File) qm = Mode(qm | TQFileDialog::AnyFile);
363 else if (m & KFile::Directory) qm = Mode(qm | TQFileDialog::DirectoryOnly);
364 if (m & KFile::Files) qm = Mode(qm | TQFileDialog::ExistingFiles);
365 if (m & KFile::ExistingOnly) qm = Mode(qm | TQFileDialog::ExistingFile);
367 TQFileDialog::setMode( qm );
379void KexiStartupFileDialogBase::setMode(
unsigned int m )
381 setMode(
static_cast<KFile::Mode
>( m ));
384void KexiStartupFileDialogBase::setOperationMode( KFileDialog::OperationMode mode )
388 if (mode == KFileDialog::Saving) {
389 setMode( KFile::File );
390 setIcon( TDEGlobal::iconLoader()->loadIcon(
"document-save", TDEIcon::Desktop) );
395 updateAutoSelectExtension ();
398TQString KexiStartupFileDialogBase::currentFilter()
const
405 TQString f = selectedFilter();
407 f = f.mid(f.find(
'(')+1);
408 if (f.mid(f.find(
')')!=-1))
409 f = f.left(f.find(
')'));
413void KexiStartupFileDialogBase::setFilter(
const TQString& filter)
415 d->kde_filters = filter;
416 int pos = d->kde_filters.find(
'/');
421 if (pos > 0 && filter[pos - 1] !=
'\\') {
422 TQStringList filters = TQStringList::split(
" ", d->kde_filters );
423 setMimeFilter( filters );
426 TQFileDialog::setFilters( convertKFileDialogFilterToTQFileDialogFilter(filter) );
434 updateAutoSelectExtension ();
437void KexiStartupFileDialogBase::setMimeFilter(
const TQStringList& mimeTypes,
438 const TQString& defaultType )
440 d->mimetypes = mimeTypes;
456 if (!startDir.startsWith(
":"))
459 TQString path( KFileDialog::getStartURL(startDir, recentDir).path() );
463 return fi.isDir() ? fi.absFilePath() : fi.dir(
true).absPath();
466void KexiStartupFileDialogBase::saveLastVisitedPath(
const TQString& path)
472 TQString dir( fi.isDir() ? fi.absFilePath() : fi.dir(
true).absPath() );
TQString m_lastVisitedPathsVariable
Used by win32;.
TQString realStartDir(const TQString &startDir)