-rw-r--r-- | libopie2/opieui/fileselector/ofiledialog.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libopie2/opieui/fileselector/ofiledialog.cpp b/libopie2/opieui/fileselector/ofiledialog.cpp index 65648ce..92d4271 100644 --- a/libopie2/opieui/fileselector/ofiledialog.cpp +++ b/libopie2/opieui/fileselector/ofiledialog.cpp @@ -69,181 +69,190 @@ 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 ); if ( inf.isFile() ) cfg.writeEntry("LastDir", inf.dirPath( true ) ); else cfg.writeEntry("LastDir", file ); } }; /** * This constructs a modal dialog * * @param caption The caption of the dialog * @param wid The parent widget * @param mode The mode of the OFileSelector @see OFileSelector * @param selector The selector of the OFileSelector * @param dirName the dir or resource to start from * @param fileName a proposed or existing filename * @param mimetypes The mimeTypes */ OFileDialog::OFileDialog(const QString &caption, QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName, const QMap<QString,QStringList>& mimetypes ) : QDialog( wid, "OFileDialog", true ) { // QVBoxLayout *lay = new QVBoxLayout(this); //showMaximized(); QVBoxLayout *lay = new QVBoxLayout(this ); file = new OFileSelector(this , mode, selector, dirName, fileName, mimetypes ); lay->addWidget( file ); //lay->addWidget( file ); //showFullScreen(); setCaption( caption.isEmpty() ? tr("FileDialog") : caption ); connect(file, SIGNAL(fileSelected(const QString&) ), this, SLOT(slotFileSelected(const QString&) ) ); connect(file, SIGNAL(ok() ), this, SLOT(slotSelectorOk()) ) ; connect(file, SIGNAL(dirSelected(const QString&) ), this, SLOT(slotDirSelected(const QString&) ) ); } /** * @returns the mimetype of the selected * currently it return QString::null */ QString OFileDialog::mimetype()const { return QString::null; } /** * @return the fileName */ QString OFileDialog::fileName()const { return file->selectedName(); } /** * return a DocLnk to the current file */ DocLnk OFileDialog::selectedDocument()const { return file->selectedDocument(); } /** * This opens up a filedialog in Open mode * * @param selector the Selector Mode * @param startDir Where to start from * @param file A proposed filename * @param mimes A list of MimeTypes * @param wid the parent * @param caption of the dialog if QString::null tr("Open") will be used * @return the fileName or QString::null */ QString OFileDialog::getOpenFileName(int selector, const QString &_startDir, const QString &file, const MimeTypes &mimes, QWidget *wid, const QString &caption ) { 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); if( QPEApplication::execDialog(&dlg ) ) { ret = dlg.fileName(); saveLastDir( "FileDialog-OPEN", ret ); } return ret; } /** * This opens up a file dialog in save mode * @see getOpenFileName */ QString OFileDialog::getSaveFileName(int selector, const QString &_startDir, const QString &file, const MimeTypes &mimes, QWidget *wid, const QString &caption ) { 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); + + /* + * For the save mode we do not want a file to be written + * if the user just clicked on it + * #1522 + */ + dlg.disconnect( dlg.file, SIGNAL(fileSelected(const QString&)) ); + dlg.disconnect( dlg.file, SIGNAL(ok()) ); + if( QPEApplication::execDialog(&dlg) ) { ret = dlg.fileName(); saveLastDir( "FileDialog-SAVE", ret ); } return ret; } /** * This opens up a filedialog in select directory mode * * @param selector the Selector Mode * @param startDir Where to start from * @param wid the parent * @param caption of the dialog if QString::null tr("Open") will be used * @return the directoryName or QString::null */ QString OFileDialog::getDirectory(int selector, const QString &_startDir, QWidget *wid, const QString &caption ) { QString ret; QString startDir = _startDir; if ( startDir.isEmpty() ) startDir = lastUsedDir( "FileDialog-SELECTDIR" ); OFileDialog dlg( caption.isEmpty() ? tr( "Select Directory" ) : caption, wid, OFileSelector::DirectorySelector, selector, startDir ); if ( QPEApplication::execDialog(&dlg) ) { ret = dlg.fileName(); saveLastDir( "FileDialog-SELECTDIR", ret ); } return ret; } void OFileDialog::slotFileSelected(const QString & ) { accept(); } void OFileDialog::slotSelectorOk( ) { accept(); } void OFileDialog::slotDirSelected(const QString &dir ) { setCaption( dir ); } |