diff options
Diffstat (limited to 'src/dialogs/qfiledialog.h')
-rw-r--r-- | src/dialogs/qfiledialog.h | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/src/dialogs/qfiledialog.h b/src/dialogs/qfiledialog.h new file mode 100644 index 0000000..82d1f9a --- /dev/null +++ b/src/dialogs/qfiledialog.h @@ -0,0 +1,347 @@ +/**************************************************************************** +** +** Definition of QFileDialog class +** +** Created : 950428 +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the dialogs module of the Qt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free Qt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.QPL +** included in the packaging of this file. Licensees holding valid Qt +** Commercial licenses may use this file in accordance with the Qt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef QFILEDIALOG_H +#define QFILEDIALOG_H + +class QPushButton; +class QButton; +class QLabel; +class QWidget; +class QFileDialog; +class QTimer; +class QNetworkOperation; +class QLineEdit; +class QListViewItem; +class QListBoxItem; +class QFileDialogPrivate; +class QFileDialogQFileListView; + +#ifndef QT_H +#include "qdir.h" +#include "qdialog.h" +#include "qurloperator.h" +#include "qurlinfo.h" +#endif // QT_H + +#if __GNUC__ - 0 > 3 +#pragma GCC system_header +#endif + +#ifndef QT_NO_FILEDIALOG + +class Q_EXPORT QFileIconProvider : public QObject +{ + Q_OBJECT +public: + QFileIconProvider( QObject * parent = 0, const char* name = 0 ); + virtual const QPixmap * pixmap( const QFileInfo & ); + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QFileIconProvider( const QFileIconProvider & ); + QFileIconProvider& operator=( const QFileIconProvider & ); +#endif +}; + +class Q_EXPORT QFilePreview +{ +public: + QFilePreview(); + virtual void previewUrl( const QUrl &url ) = 0; + +}; + +class Q_EXPORT QFileDialog : public QDialog +{ + Q_OBJECT + Q_ENUMS( Mode ViewMode PreviewMode ) + // ##### Why are this read-only properties ? + Q_PROPERTY( QString selectedFile READ selectedFile ) + Q_PROPERTY( QString selectedFilter READ selectedFilter ) + Q_PROPERTY( QStringList selectedFiles READ selectedFiles ) + // #### Should not we be able to set the path ? + Q_PROPERTY( QString dirPath READ dirPath ) + Q_PROPERTY( bool showHiddenFiles READ showHiddenFiles WRITE setShowHiddenFiles ) + Q_PROPERTY( Mode mode READ mode WRITE setMode ) + Q_PROPERTY( ViewMode viewMode READ viewMode WRITE setViewMode ) + Q_PROPERTY( PreviewMode previewMode READ previewMode WRITE setPreviewMode ) + Q_PROPERTY( bool infoPreview READ isInfoPreviewEnabled WRITE setInfoPreviewEnabled ) + Q_PROPERTY( bool contentsPreview READ isContentsPreviewEnabled WRITE setContentsPreviewEnabled ) + +public: + QFileDialog( const QString& dirName, const QString& filter = QString::null, + QWidget* parent=0, const char* name=0, bool modal = FALSE ); + QFileDialog( QWidget* parent=0, const char* name=0, bool modal = FALSE ); + ~QFileDialog(); + + // recommended static functions + + static QString getOpenFileName( const QString &initially = QString::null, + const QString &filter = QString::null, + QWidget *parent = 0, const char* name = 0, + const QString &caption = QString::null, + QString *selectedFilter = 0, + bool resolveSymlinks = TRUE); + static QString getSaveFileName( const QString &initially = QString::null, + const QString &filter = QString::null, + QWidget *parent = 0, const char* name = 0, + const QString &caption = QString::null, + QString *selectedFilter = 0, + bool resolveSymlinks = TRUE); + static QString getExistingDirectory( const QString &dir = QString::null, + QWidget *parent = 0, + const char* name = 0, + const QString &caption = QString::null, + bool dirOnly = TRUE, + bool resolveSymlinks = TRUE); + static QStringList getOpenFileNames( const QString &filter= QString::null, + const QString &dir = QString::null, + QWidget *parent = 0, + const char* name = 0, + const QString &caption = QString::null, + QString *selectedFilter = 0, + bool resolveSymlinks = TRUE); + + // other static functions + + static void setIconProvider( QFileIconProvider * ); + static QFileIconProvider * iconProvider(); + + // non-static function for special needs + + QString selectedFile() const; + QString selectedFilter() const; + virtual void setSelectedFilter( const QString& ); + virtual void setSelectedFilter( int ); + + void setSelection( const QString &); + + void selectAll( bool b ); + + QStringList selectedFiles() const; + + QString dirPath() const; + + void setDir( const QDir & ); + const QDir *dir() const; + + void setShowHiddenFiles( bool s ); + bool showHiddenFiles() const; + + void rereadDir(); + void resortDir(); + + enum Mode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }; + void setMode( Mode ); + Mode mode() const; + + enum ViewMode { Detail, List }; + enum PreviewMode { NoPreview, Contents, Info }; + void setViewMode( ViewMode m ); + ViewMode viewMode() const; + void setPreviewMode( PreviewMode m ); + PreviewMode previewMode() const; + + bool eventFilter( QObject *, QEvent * ); + + bool isInfoPreviewEnabled() const; + bool isContentsPreviewEnabled() const; + void setInfoPreviewEnabled( bool ); + void setContentsPreviewEnabled( bool ); + + void setInfoPreview( QWidget *w, QFilePreview *preview ); + void setContentsPreview( QWidget *w, QFilePreview *preview ); + + QUrl url() const; + + void addFilter( const QString &filter ); + +public slots: + void done( int ); + void setDir( const QString& ); + void setUrl( const QUrlOperator &url ); + void setFilter( const QString& ); + void setFilters( const QString& ); + void setFilters( const char ** ); + void setFilters( const QStringList& ); + +protected: + void resizeEvent( QResizeEvent * ); + void keyPressEvent( QKeyEvent * ); + + void addWidgets( QLabel *, QWidget *, QPushButton * ); + void addToolButton( QButton *b, bool separator = FALSE ); + void addLeftWidget( QWidget *w ); + void addRightWidget( QWidget *w ); + +signals: + void fileHighlighted( const QString& ); + void fileSelected( const QString& ); + void filesSelected( const QStringList& ); + void dirEntered( const QString& ); + void filterSelected( const QString& ); + +private slots: + void detailViewSelectionChanged(); + void listBoxSelectionChanged(); + void changeMode( int ); + void fileNameEditReturnPressed(); + void stopCopy(); + void removeProgressDia(); + + void fileSelected( int ); + void fileHighlighted( int ); + void dirSelected( int ); + void pathSelected( int ); + + void updateFileNameEdit( QListViewItem *); + void selectDirectoryOrFile( QListViewItem * ); + void popupContextMenu( QListViewItem *, const QPoint &, int ); + void popupContextMenu( QListBoxItem *, const QPoint & ); + void updateFileNameEdit( QListBoxItem *); + void selectDirectoryOrFile( QListBoxItem * ); + void fileNameEditDone(); + + void okClicked(); + void filterClicked(); // not used + void cancelClicked(); + + void cdUpClicked(); + void newFolderClicked(); + + void fixupNameEdit(); + + void doMimeTypeLookup(); + + void updateGeometries(); + void modeButtonsDestroyed(); + void urlStart( QNetworkOperation *op ); + void urlFinished( QNetworkOperation *op ); + void dataTransferProgress( int bytesDone, int bytesTotal, QNetworkOperation * ); + void insertEntry( const QValueList<QUrlInfo> &fi, QNetworkOperation *op ); + void removeEntry( QNetworkOperation * ); + void createdDirectory( const QUrlInfo &info, QNetworkOperation * ); + void itemChanged( QNetworkOperation * ); + void goBack(); + +private: + enum PopupAction { + PA_Open = 0, + PA_Delete, + PA_Rename, + PA_SortName, + PA_SortSize, + PA_SortType, + PA_SortDate, + PA_SortUnsorted, + PA_Cancel, + PA_Reload, + PA_Hidden + }; + + void init(); + bool trySetSelection( bool isDir, const QUrlOperator &, bool ); + void deleteFile( const QString &filename ); + void popupContextMenu( const QString &filename, bool withSort, + PopupAction &action, const QPoint &p ); + void updatePreviews( const QUrl &u ); + + QDir reserved; // was cwd + QString fileName; + + friend class QFileDialogQFileListView; + friend class QFileListBox; + + QFileDialogPrivate *d; + QFileDialogQFileListView *files; + + QLineEdit *nameEdit; // also filter + QPushButton *okB; + QPushButton *cancelB; + +#if defined(Q_WS_WIN) + static QString winGetOpenFileName( const QString &initialSelection, + const QString &filter, + QString* workingDirectory, + QWidget *parent = 0, + const char* name = 0, + const QString& caption = QString::null, + QString* selectedFilter = 0 ); + static QString winGetSaveFileName( const QString &initialSelection, + const QString &filter, + QString* workingDirectory, + QWidget *parent = 0, + const char* name = 0, + const QString& caption = QString::null, + QString* selectedFilter = 0 ); + static QStringList winGetOpenFileNames( const QString &filter, + QString* workingDirectory, + QWidget *parent = 0, + const char* name = 0, + const QString& caption = QString::null, + QString* selectedFilter = 0 ); + static QString winGetExistingDirectory( const QString &initialDirectory, + QWidget* parent = 0, + const char* name = 0, + const QString& caption = QString::null); + static QString resolveLinkFile( const QString& linkfile ); +#endif +#if defined(Q_WS_MACX) || defined(Q_WS_MAC9) + static QString macGetSaveFileName( const QString &, const QString &, + QString *, QWidget *, const char*, + const QString&, QString *); + static QStringList macGetOpenFileNames( const QString &, QString*, + QWidget *, const char *, + const QString&, QString *, + bool = TRUE, bool = FALSE ); +#endif + + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QFileDialog( const QFileDialog & ); + QFileDialog &operator=( const QFileDialog & ); +#endif +}; + +#endif + +#endif // QFILEDIALOG_H |