aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/filedialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui/filedialog.h')
-rw-r--r--src/qmmpui/filedialog.h182
1 files changed, 158 insertions, 24 deletions
diff --git a/src/qmmpui/filedialog.h b/src/qmmpui/filedialog.h
index fd87b47fa..3c287fee7 100644
--- a/src/qmmpui/filedialog.h
+++ b/src/qmmpui/filedialog.h
@@ -1,5 +1,5 @@
/**************************************************************************
-* Copyright (C) 2008 by Ilya Kotov *
+* Copyright (C) 2008-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -30,90 +30,214 @@
#include "filedialogfactory.h"
-/**
- @author Vladimir Kuznetsov <vovanec@gmail.com>
+/*! @brief The FileDialog class is the base interface class of file dialogs.
+ * @author Vladimir Kuznetsov <vovanec@gmail.com>
*/
-
class FileDialog : public QObject
{
Q_OBJECT
public:
- enum Mode{AddFile = 0, AddDir, AddFiles, AddDirs, AddDirsFiles, SaveFile};
-
+ /*!
+ * Enum of available file dialog modes
+ */
+ enum Mode
+ {
+ AddFile = 0, /*!< Get existing file */
+ AddDir, /*!< Get existing directory */
+ AddFiles, /*!< Get existing files */
+ AddDirs, /*!< Get existing directories */
+ AddDirsFiles, /*!< Get existing files and directories */
+ SaveFile /*!< Get existing or non-existing file */
+ };
+ /*!
+ * This is a static function that will open modal file dialog and
+ * return an existing directory selected by the user.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ */
static QString getExistingDirectory(QWidget *parent = 0,
const QString &caption = QString(),
const QString &dir = QString());
-
+ /*!
+ * This is a static function that will open modal file dialog and
+ * return an existing file selected by the user.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter
+ */
static QString getOpenFileName(QWidget *parent = 0,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = 0);
-
+ /*!
+ * This is a static function that will open modal file dialog and
+ * return an existing file selected by the user.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter.
+ */
static QStringList getOpenFileNames(QWidget *parent = 0,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = 0);
-
+ /*!
+ * This is a static function that will open modal file dialog and
+ * return a file name selected by the user. The file does not have to exist.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter.
+ */
static QString getSaveFileName (QWidget *parent = 0,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = 0);
-
+ /*!
+ * Opens nonmodal file dialog. Selected file dialog should support nonmodal mode.
+ * Otherwise this function creates modal dialog.
+ * @param parent Parent widget.
+ * @param mode File dialog mode.
+ * @param dir Default directory.
+ * @param receiver Receiver QObject.
+ * @param member Receiver slot.
+ * @param caption Dialog title.
+ * @param filters Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter.
+ *
+ * Usage: FileDialog::popup(this, FileDialog::AddDirs, &m_lastDir,
+ * m_playListModel, SLOT(addFileList(const QStringList&)),
+ * tr("Choose a directory"));
+ */
static void popup(QWidget *parent = 0,
- Mode = AddFiles,
+ Mode mode = AddFiles,
QString *dir = 0,
QObject *receiver = 0,
const char *member = 0,
const QString &caption = QString(),
const QString &filters = QString());
-
+ /*!
+ * Returns a list of registered file dialog factories.
+ */
static QList <FileDialogFactory*> registeredFactories();
+ /*!
+ * Returns \b true if selected file dialog doesn't support nonmodal mode, otherwise \b false
+ */
static bool isModal();
+ /*!
+ * Selects current file dialog factory.
+ */
static void setEnabled(FileDialogFactory *factory);
+ /*!
+ * Returns \b true if file dialog \b factory is used by default, otherwise \b false
+ */
static bool isEnabled(FileDialogFactory *factory);
-
signals:
+ /*!
+ * Emitted when the add button has pressed. Subclass should emit this signal.
+ */
void filesAdded(const QStringList&);
protected:
+ /*!
+ * Object constructor.
+ */
FileDialog();
+ /*!
+ * This is a function that will open modal file dialog and
+ * return an existing directory selected by the user.
+ *
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ */
virtual QString existingDirectory(QWidget *parent,
const QString &caption,
const QString &dir);
-
+ /*!
+ * This is a function that will open modal file dialog and
+ * return an existing file selected by the user.
+ * Subclass should reimplement this function.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter
+ */
virtual QString openFileName( QWidget *parent,
const QString &caption,
const QString &dir,
const QString &filter,
QString *selectedFilter);
-
+ /*!
+ * This is a function that will open modal file dialog and
+ * return an existing files selected by the user.
+ * Subclass should reimplement this function.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter
+ */
virtual QStringList openFileNames(QWidget *parent,
const QString &caption,
const QString &dir,
const QString &filter,
QString *selectedFilter);
-
+ /*!
+ * This is a function that will open modal file dialog and
+ * return a file name selected by the user. The file does not have to exist.
+ * Subclass should reimplement this function.
+ * @param parent Parent widget.
+ * @param caption Dialog title.
+ * @param dir Default directory.
+ * @param filter Filer used by file dialog
+ * (example: "Audio (*.mp3 *.ogg);;Text files (*.txt);;XML files (*.xml)").
+ * @param selectedFilter Default selected filter.
+ */
virtual QString saveFileName ( QWidget *parent ,
const QString &caption,
const QString &dir,
const QString &filter ,
QString *selectedFilter);
-
+ /*!
+ * Returns \b true if file dialog doesn't support nonmodal mode, otherwise \b false
+ * Subclass should reimplement this function.
+ */
virtual bool modal()const
{
return TRUE;
};
-
+ /*!
+ * Object destructor
+ */
virtual ~FileDialog()
{
;
};
-
- void init(QObject* receiver, const char* member, QString *dir);
-
+ /*!
+ * Opens nonmodal file dialog. Selected file dialog should support nonmodal mode.
+ * Otherwise this function does nothing.
+ * Nonmodal dialog subclass should reimplement this function.
+ * @param dir Default directory.
+ * @param mode File dialog mode.
+ * @param caption Dialog title.
+ * @param mask Filer used by file dialog
+ */
virtual void raise(const QString &dir = QString(),
Mode mode = AddFiles,
const QString &caption = QString(),
@@ -124,17 +248,27 @@ protected:
Q_UNUSED(caption);
Q_UNUSED(mask);
}
-
+ /*!
+ * Returns a pointer to the selected file dialog instance.
+ */
static FileDialog* instance();
+ /*!
+ * Returns a pointer to the default file dialog instance.
+ */
static FileDialog* defaultInstance();
+ /*!
+ * Registers file dialog \b factory
+ * Returns \b false if \b factory is already registered, otherwise \b true
+ */
static bool registerFactory(FileDialogFactory *factory);
- static void registerBuiltinFactories();
- static void registerExternalFactories();
private slots:
void updateLastDir(const QStringList&);
private:
+ void init(QObject* receiver, const char* member, QString *dir);
+ static void registerBuiltinFactories();
+ static void registerExternalFactories();
static QMap <QString,FileDialogFactory*> factories;
static FileDialog* _instance;
static QString m_current_factory;