File: FileDialog.h

package info (click to toggle)
qtop 2.3.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,976 kB
  • sloc: cpp: 40,477; makefile: 7
file content (144 lines) | stat: -rw-r--r-- 3,496 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#ifndef FileDialog_h
#define FileDialog_h

/******************************************************************************
*
* Copyright (C) 2002 Hugo PEREIRA <mailto: hugo.pereira@free.fr>
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* Any WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program.  If not, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/

#include "Counter.h"
#include "File.h"

#include <QFileDialog>
#include <QObject>
#include <QString>
#include <QStringList>

//* customized file selection dialog, to store last selected directory
class FileDialog: public QObject, private Base::Counter<FileDialog>
{

    public:

    //* creator
    explicit FileDialog( QWidget* parent );

    //* open mode
    FileDialog& setAcceptMode( const QFileDialog::AcceptMode mode )
    {
        acceptMode_ = mode;
        return *this;
    }

    //* file mode
    FileDialog& setFileMode( const QFileDialog::FileMode mode )
    {
        fileMode_ = mode;
        return *this;
    }

    //* caption
    FileDialog& setCaption( const QString& caption )
    {
        caption_ = caption;
        return *this;
    }

    //* default file/directory
    /** it is used as a starting selection when file dialog is opened */
    FileDialog& selectFile( const File& file );

    //* filter
    FileDialog& setFilter( const QString& filter )
    {
        filter_ = filter;
        return *this;
    }

    //* options
    FileDialog& setOptions( const QFileDialog::Options& options )
    {
        options_ = options;
        return *this;
    }

    //* get file
    File getFile();

    //* get list of files
    File::List getFiles();

    //* reference to statically scoped working directory
    const File& workingDirectory() const
    { return _workingDirectory(); }

    protected:

    //* reference to statically scoped working directory
    static File& _workingDirectory();

    //* accept mode
    QFileDialog::AcceptMode _acceptMode() const
    { return acceptMode_; }

    //* file mode
    QFileDialog::FileMode _fileMode() const
    { return fileMode_; }

    //* caption
    const QString& _caption() const
    { return caption_; }

    //* selected file
    /** it is used as a starting selection when file dialog is opened */
    const File& _selectedFile() const
    { return selectedFile_; }

    //* filter
    const QString& _filter() const
    { return filter_; }

    //* options
    QFileDialog::Options _options() const
    { return options_; }

    private:

    //* accept mode
    QFileDialog::AcceptMode acceptMode_ = QFileDialog::AcceptOpen;

    //* file mode
    QFileDialog::FileMode fileMode_ = QFileDialog::ExistingFile;

    //* caption
    QString caption_;

    //* default file
    File selectedFile_;

    //* filter
    QString filter_;

    //* options
    QFileDialog::Options options_ = 0;

    //* needed to allow ImageFileDialog to acces working directory
    friend class ImageFileDialog;

};

#endif