/* === This file is part of Calamares - <https://github.com/calamares> ===
 *
 *   Copyright 2018, Caio Jordão Carvalho <caiojcarvalho@gmail.com>
 *
 *   Calamares 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 3 of the License, or
 *   (at your option) any later version.
 *
 *   Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef VOLUMEGROUPBASEDIALOG_H
#define VOLUMEGROUPBASEDIALOG_H

#include <kpmcore/core/partition.h>

#include <QDialog>

namespace Ui {
class VolumeGroupBaseDialog;
}

class QComboBox;
class QLineEdit;
class QListWidget;
class QSpinBox;

class VolumeGroupBaseDialog : public QDialog
{
    Q_OBJECT

public:
    explicit VolumeGroupBaseDialog( QString& vgName,
                                    QVector< const Partition* > pvList,
                                    qint32& peSize,
                                    QWidget* parent = nullptr );
    ~VolumeGroupBaseDialog();

protected:
    virtual void updateOkButton();

    void updateTotalSize();

    void updateTotalSectors();

    QVector< const Partition* > checkedItems() const;

    bool isSizeValid() const;

    QString& vgNameValue() const;

    qint32& peSizeValue() const;

    QLineEdit* vgName() const;

    QComboBox* vgType() const;

    QSpinBox* peSize() const;

    QListWidget* pvList() const;

    QPushButton* okButton() const;

private:
    Ui::VolumeGroupBaseDialog* ui;

    QString& m_vgNameValue;
    qint32& m_peSizeValue;

    qint64 m_totalSizeValue;
    qint64 m_usedSizeValue;
};

#endif // VOLUMEGROUPBASEDIALOG_H