view src/metadataview.h @ 81:5923d569167b

Make Header tooltips configurable
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 18 Jun 2015 17:48:28 +0200
parents 098a10fc2e83
children 3916cb3c9105
line wrap: on
line source
#ifndef METADATAVIEW_H
#define METADATAVIEW_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.
 */

/**
 * @file  metadataview.h
 * @brief Table view of the meta data information
 */

#include <QWidget>
#include <QItemSelection>
#include <QDateTime>

class QTableView;
class QSortFilterProxyModel;
class QxtCsvModel;

/**
 * @class MetaDataView
 * @brief Table view of the meta data data information.
 */
class MetaDataView: public QWidget
{
    Q_OBJECT

public:
    MetaDataView(QWidget * parent = 0, Qt::WindowFlags f = 0);

protected:
    void setupGUI();

public:
    /**
     * @brief parse a metadata file and set up the model accordingly.
     *
     * @returns a localized error message in case of parsing errors. Or
     * an empty string on success. */
    QString parseMetaData(const QString& fileName);

Q_SIGNALS:
    /** @brief emited when the selection changed. */
    void selectionChanged(const QString& pictureFile, int current, int max,
        const QString& timestamp, int number);

protected slots:
    /** @brief internal slot to handle table view selection changes */
    void viewSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected);

    /** @brief the data has been changed. Could be filter. */
    void dataChanged();

    /** @brief load the configured header tooltips */
    void setupHeaderTooltips();

public slots:
    /** @brief selects the next row and emits a selection changed signal */
    void selectNextRow();

    /** @brief selects the previous row and emits a selection changed signal */
    void selectPrevRow();

    /** @brief select a specific row. */
    void selectRow(int row);

    /** @brief select the first row. */
    void selectFirstRow();

    /** @brief applies the default sort order from configuration */
    void applyDefaultSort();

    /** @brief resizes the columns to headers content */
    void resizeColsToHeaders();

protected:
    QxtCsvModel *mCSVModel;
    QSortFilterProxyModel *mSortModel;
    QTableView *mView;
    int mDateColIdx;
};


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