author | eilers <eilers> | 2003-08-08 15:09:29 (UTC) |
---|---|---|
committer | eilers <eilers> | 2003-08-08 15:09:29 (UTC) |
commit | b87b33dc1f6e8e1276a7035ab7a3e53b8ed4bd16 (patch) (side-by-side diff) | |
tree | b0f96db67cfb1b9d2476530ecec9a2ba6eacbab1 /libopie/ofiledialog.cc | |
parent | 14d394e6c107b037a09a31a92605034fe50f7813 (diff) | |
download | opie-b87b33dc1f6e8e1276a7035ab7a3e53b8ed4bd16.zip opie-b87b33dc1f6e8e1276a7035ab7a3e53b8ed4bd16.tar.gz opie-b87b33dc1f6e8e1276a7035ab7a3e53b8ed4bd16.tar.bz2 |
Merging all changes from BRANCH_1_0.
-rw-r--r-- | libopie/ofiledialog.cc | 81 |
1 files changed, 70 insertions, 11 deletions
diff --git a/libopie/ofiledialog.cc b/libopie/ofiledialog.cc index 9e725c2..5511b24 100644 --- a/libopie/ofiledialog.cc +++ b/libopie/ofiledialog.cc @@ -2,3 +2,3 @@ =. This file is part of the OPIE Project - .=l. Copyright (c) 2002 <> + .=l. Copyright (c) 2002,2003 <zecke@handhelds.org> .>+-= @@ -29,2 +29,6 @@ #include <qpe/applnk.h> +#include <qpe/config.h> +#include <qpe/qpeapplication.h> + +#include <qfileinfo.h> #include <qstring.h> @@ -33,4 +37,36 @@ + #include "ofiledialog.h" + +namespace { + /* + * helper functions to load the start dir + * and to save it + * helper to extract the dir out of a file name + */ + /** + * This method will use Config( argv[0] ); + * @param key The group key used + */ + QString lastUsedDir( const QString& key ) { + if ( qApp->argc() < 1 ) + return QString::null; + + Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); // appname + cfg.setGroup( key ); + return cfg.readEntry("LastDir", QPEApplication::documentDir() ); + } + + void saveLastDir( const QString& key, const QString& file ) { + if ( qApp->argc() < 1 ) + return; + + Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); + cfg.setGroup( key ); + QFileInfo inf( file ); + cfg.writeEntry("LastDir", inf.dirPath( true ) ); + } +}; + /** @@ -66,8 +102,11 @@ OFileDialog::OFileDialog(const QString &caption, this, SLOT(slotFileSelected(const QString&) ) ); + connect(file, SIGNAL(ok() ), + this, SLOT(slotSelectorOk()) ) ; + connect(file, SIGNAL(dirSelected(const QString&) ), this, SLOT(slotDirSelected(const QString&) ) ); + +#if 0 connect(file, SIGNAL(dirSelected(const QString &) ), this, SLOT(slotDirSelected(const QString &) ) ); - - - file->setYesCancelVisible( false ); // relayout +#endif } @@ -110,3 +149,3 @@ DocLnk OFileDialog::selectedDocument()const QString OFileDialog::getOpenFileName(int selector, - const QString &startDir, + const QString &_startDir, const QString &file, @@ -117,7 +156,14 @@ QString OFileDialog::getOpenFileName(int selector, QString ret; + QString startDir = _startDir; + if (startDir.isEmpty() ) + startDir = lastUsedDir( "FileDialog-OPEN" ); + + OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption, - wid, OFileSelector::OPEN, selector, startDir, file, mimes); + wid, OFileSelector::Open, selector, startDir, file, mimes); dlg.showMaximized(); - if( dlg.exec() ) + if( dlg.exec() ) { ret = dlg.fileName(); + saveLastDir( "FileDialog-OPEN", ret ); + } @@ -131,3 +177,3 @@ QString OFileDialog::getOpenFileName(int selector, QString OFileDialog::getSaveFileName(int selector, - const QString &startDir, + const QString &_startDir, const QString &file, @@ -138,7 +184,13 @@ QString OFileDialog::getSaveFileName(int selector, QString ret; + QString startDir = _startDir; + if (startDir.isEmpty() ) + startDir = lastUsedDir( "FileDialog-SAVE" ); + OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption, - wid, OFileSelector::SAVE, selector, startDir, file, mimes); + wid, OFileSelector::Save, selector, startDir, file, mimes); dlg.showMaximized(); - if( dlg.exec() ) + if( dlg.exec() ) { ret = dlg.fileName(); + saveLastDir( "FileDialog-SAVE", ret ); + } @@ -151,4 +203,11 @@ void OFileDialog::slotFileSelected(const QString & ) } -void OFileDialog::slotDirSelected(const QString & ) + +void OFileDialog::slotSelectorOk( ) +{ + accept(); +} + +void OFileDialog::slotDirSelected(const QString &dir ) { + setCaption( dir ); // if mode |