From 2599e347d9444cfa6282fec9f2bfb9df4743d6d2 Mon Sep 17 00:00:00 2001 From: zecke Date: Thu, 11 Apr 2002 20:30:22 +0000 Subject: OFileSelector const QStringList -> const QSTringList& OFileDialog initial version the layout is broken but don't ask me. I played with the parent played with manual relayouting. Currently the setYesCancelVisisble crashes but that's ok for now OFileDialog provides static methods for OpenFileName, SaveFileName and DIrFileName Multiple selection will follow Maybe a dwarf fixes the problems for me overnight --- diff --git a/libopie/ofiledialog.cc b/libopie/ofiledialog.cc new file mode 100644 index 0000000..92b0d0a --- a/dev/null +++ b/libopie/ofiledialog.cc @@ -0,0 +1,110 @@ +/* +               =. This file is part of the OPIE Project +             .=l. Copyright (c) 2002 <> +           .>+-= + _;:,     .>    :=|. This library is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: PARTICULAR PURPOSE. See the GNU +..}^=.=       =       ; Library General Public License for more +++=   -.     .`     .: details. + :     =  ...= . :.=- + -.   .:....=;==+<; You should have received a copy of the GNU +  -_. . .   )=.  = Library General Public License along with +    --        :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include +#include +#include +#include + +#include "ofiledialog.h" + +OFileDialog::OFileDialog(const QString &caption, + QWidget *wid, int mode, int selector, + const QString &dirName, + const QString &fileName, + const QStringList &mimetypes ) + : QDialog( wid, "OFileDialog", true ) +{ + QVBoxLayout *lay = new QVBoxLayout(this); + + file = new OFileSelector(0 , mode, selector, + dirName, fileName, + mimetypes ); + lay->addWidget( file ); + //showFullScreen(); + setCaption( caption.isEmpty() ? tr("FileDialog") : caption ); + connect(file, SIGNAL(fileSelected(const QString&) ), + this, SLOT(slotFileSelected(const QString&) ) ); + + connect(file, SIGNAL(dirSelected(const QString &) ), + this, SLOT(slotDirSelected(const QString &) ) ); + showMaximized(); + file->setYesCancelVisible( false ); // relayout +} +QString OFileDialog::mimetype()const +{ + return QString::null; +} +QString OFileDialog::fileName()const +{ + return file->selectedName(); +} +DocLnk OFileDialog::selectedDocument()const +{ + return file->selectedDocument(); +} +QString OFileDialog::getOpenFileName(int selector, + const QString &startDir, + const QString &file, + const QStringList &mimes, + QWidget *wid, + const QString &caption ) +{ + QString ret; + OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption, + wid, OFileSelector::OPEN, selector, startDir, file, mimes); + if( dlg.exec() ) + ret = dlg.fileName(); + + return ret; +} +QString OFileDialog::getSaveFileName(int selector, + const QString &startDir, + const QString &file, + const QStringList &mimes, + QWidget *wid, + const QString &caption ) +{ + QString ret; + OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption, + wid, OFileSelector::SAVE, selector, startDir, file, mimes); + if( dlg.exec() ) + ret = dlg.fileName(); + + return ret; +} + +void OFileDialog::slotFileSelected(const QString & ) +{ + accept(); +} +void OFileDialog::slotDirSelected(const QString & ) +{ + // if mode + //accept(); +} diff --git a/libopie/ofiledialog.h b/libopie/ofiledialog.h new file mode 100644 index 0000000..40d147e --- a/dev/null +++ b/libopie/ofiledialog.h @@ -0,0 +1,77 @@ +/* +               =. This file is part of the OPIE Project +             .=l. Copyright (c) 2002 zecke +           .>+-= + _;:,     .>    :=|. This library is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: PARTICULAR PURPOSE. See the GNU +..}^=.=       =       ; Library General Public License for more +++=   -.     .`     .: details. + :     =  ...= . :.=- + -.   .:....=;==+<; You should have received a copy of the GNU +  -_. . .   )=.  = Library General Public License along with +    --        :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + + +#ifndef OpieFileDialog_h +#define OpieFileDialog_h + +#include + +#include + +class OFileDialog : public QDialog { + Q_OBJECT + public: + OFileDialog(const QString &caption, + QWidget *, int mode, int selector, + const QString &dirName, + const QString &fileName = QString::null, + const QStringList &mimetypes = QStringList() ); + QString mimetype() const; + QString fileName() const; + DocLnk selectedDocument()const; + + // static methods + static QString getOpenFileName(int selector, + const QString& startDir = QString::null, + const QString &fileName = QString::null, + const QStringList& mimefilter = QStringList(), + QWidget *wid = 0, + const QString &caption = QString::null ); + + static QString getSaveFileName(int selector, + const QString& startDir = QString::null, + const QString& fileName = QString::null, + const QStringList& mimefilter = QStringList(), + QWidget *wid = 0, + const QString &caption = QString::null ); + + //let's OFileSelector catch up first + //static QString getExistingDirectory(const QString& startDir = QString::null, + // QWidget *parent = 0, + // const QString& caption = QString::null ); + private: + class OFileDialogPrivate; + OFileDialogPrivate *d; + OFileSelector *file; + + private slots: + void slotFileSelected( const QString & ); + void slotDirSelected(const QString & ); +}; +#endif diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index fbe69ed..bc7c6c2 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -77,7 +77,7 @@ namespace { OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, - const QString &fileName, const QStringList mimetypes ) : QWidget( wid ) + const QString &fileName, const QStringList &mimetypes ) : QWidget( wid ) { m_selector = selector; m_currentDir = dirName; diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index bf3cb48..5e98a1e 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h @@ -116,11 +116,11 @@ class OFileSelectorItem : public QListViewItem { class OFileSelector : public QWidget { Q_OBJECT public: - enum Mode {OPEN=1, SAVE, FILESELECTOR }; + enum Mode {OPEN=1, SAVE=2, FILESELECTOR=4, DIR=8 }; enum Selector{NORMAL=1, EXTENDED = 2, EXTENDED_ALL =4 }; enum View { DIRS = 1, FILES = 2, TREE = 4, ICON = 8 }; - OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName = QString::null, const QStringList mimetypes = QStringList() ); - + OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName = QString::null, const QStringList &mimetypes = QStringList() ); + ~OFileSelector() {}; bool isToolbarVisible() const { return m_shTool; }; bool isPermissionBarVisible() const { return m_shPerm; }; bool isLineEditVisible()const { return m_shLne; }; @@ -180,6 +180,7 @@ class OFileSelector : public QWidget { signals: void fileSelected( const DocLnk & ); void fileSelected( const QString & ); + void dirSelected(const QString &dir ); void closeMe(); void ok(); void cancel(); -- cgit v0.9.0.2