view src/folderselectdialog.h @ 45:213d9163dab0

Add error handling to the folder selection dialog
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 06 May 2015 19:45:44 +0200
parents 64a51a42c01f
children 098a10fc2e83
line wrap: on
line source
#ifndef FOLDERSELECTDIALOG_H
#define FOLDERSELECTDIALOG_H
/* Copyright (C) 2015 by ETH Zürich
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */
#include <QWidget>
#include <QDialog>
#include <QItemSelection>

#include "filterwidget.h"

class QTableView;
class QSortFilterProxyModel;
class FilterWidget;
class QStandardItemModel;
class QLabel;
class QPushButton;
class QLineEdit;

class FolderSelectDialog : public QDialog
{
    Q_OBJECT

public:
    /** @brief initialize a folder select dialog with a start folder and
     * for a specific folder name pattern.
     *
     * If the parameter pathLabel is not empty it includes a path selection
     * area.
     * */
    FolderSelectDialog(const QString& startFolder,
            const QString& folderPattern,
            const QString& pathLabel = QString(),
            QWidget * parent = 0, Qt::WindowFlags f = 0);

    void setFolder(const QString& folder);

protected:
    void setupGUI();

protected slots:
    /** @brief The user wants to accept the selection */
    void wantToAccept();

    /** @brief Open the folder selection dialog for the output folder */
    void changeFolderClicked();

    /** @brief try to load the folder line into the model */
    void goClicked();

    /** @brief enable or disable the go button depending on the path. */
    void pathLineChanged();

    /** @brief enable or disable the ok button depending on the selection. */
    void selectionChanged (const QItemSelection& selected,
                           const QItemSelection& deselected);

Q_SIGNALS:
    /** @brief emited before the dialog is closed when a folder is selected */
    void folderSelected(const QString& folder);

private:
    QTableView *mView;
    FilterWidget *mFilterWidget;
    QSortFilterProxyModel *mSortModel;
    QString mCurFolder,
            mFolderPattern;
    QString mPathLabelString;
    QStandardItemModel *mModel;
    QLabel *mPathLabel;
    QLineEdit *mPathLineEdit;
    QPushButton *mGoButton,
                *mOkButton;
    bool mShowPathSelection;
};

#endif // FOLDERSELECTDIALOG_H
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)