[skip ci] Implement AcceptMode for FileChooser to also allow to define an output file
This commit is contained in:
@@ -619,7 +619,10 @@ QString FileIconProvider::type(const QFileInfo & info) const
|
||||
* Constructs a file chooser called \a name with the parent \a parent.
|
||||
*/
|
||||
FileChooser::FileChooser ( QWidget * parent )
|
||||
: QWidget(parent), md( File ), _filter( QString::null )
|
||||
: QWidget(parent)
|
||||
, md( File )
|
||||
, accMode( AcceptOpen )
|
||||
, _filter( QString::null )
|
||||
{
|
||||
QHBoxLayout *layout = new QHBoxLayout( this );
|
||||
layout->setMargin( 0 );
|
||||
@@ -710,7 +713,10 @@ void FileChooser::chooseFile()
|
||||
|
||||
QString fn;
|
||||
if ( mode() == File ) {
|
||||
fn = QFileDialog::getOpenFileName( this, tr( "Select a file" ), prechosenDirectory, _filter,0,dlgOpt );
|
||||
if (acceptMode() == AcceptOpen)
|
||||
fn = QFileDialog::getOpenFileName(this, tr( "Select a file" ), prechosenDirectory, _filter, 0, dlgOpt);
|
||||
else
|
||||
fn = QFileDialog::getSaveFileName(this, tr( "Select a file" ), prechosenDirectory, _filter, 0, dlgOpt);
|
||||
} else {
|
||||
QFileDialog::Options option = QFileDialog::ShowDirsOnly | dlgOpt;
|
||||
fn = QFileDialog::getExistingDirectory( this, tr( "Select a directory" ), prechosenDirectory,option );
|
||||
|
||||
@@ -138,12 +138,15 @@ class GuiExport FileChooser : public QWidget
|
||||
|
||||
Q_ENUMS( Mode )
|
||||
Q_PROPERTY( Mode mode READ mode WRITE setMode )
|
||||
Q_ENUMS( AcceptMode )
|
||||
Q_PROPERTY( AcceptMode acceptMode READ acceptMode WRITE setAcceptMode )
|
||||
Q_PROPERTY( QString fileName READ fileName WRITE setFileName )
|
||||
Q_PROPERTY( QString filter READ filter WRITE setFilter )
|
||||
Q_PROPERTY( QString buttonText READ buttonText WRITE setButtonText )
|
||||
|
||||
public:
|
||||
enum Mode { File, Directory };
|
||||
enum AcceptMode { AcceptOpen, AcceptSave };
|
||||
|
||||
FileChooser ( QWidget * parent = 0 );
|
||||
virtual ~FileChooser();
|
||||
@@ -169,6 +172,19 @@ public:
|
||||
*/
|
||||
QString buttonText() const;
|
||||
|
||||
/**
|
||||
* Sets the accept mode.
|
||||
*/
|
||||
void setAcceptMode(AcceptMode mode) {
|
||||
accMode = mode;
|
||||
}
|
||||
/**
|
||||
* Returns the accept mode.
|
||||
*/
|
||||
AcceptMode acceptMode() const {
|
||||
return accMode;
|
||||
}
|
||||
|
||||
public Q_SLOTS:
|
||||
virtual void setFileName( const QString &fn );
|
||||
virtual void setMode( Mode m );
|
||||
@@ -192,6 +208,7 @@ private:
|
||||
QFileSystemModel *fs_model;
|
||||
QPushButton *button;
|
||||
Mode md;
|
||||
AcceptMode accMode;
|
||||
QString _filter;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user