#ifndef CLASSOPTIONS_H
#define CLASSOPTIONS_H

#include <QDialog>
#include <QListWidgetItem>
#include "sequenz.h"

namespace Ui
{
class ClassOptions;
}

/*
 * Verwaltet den GUI Dialog, welcher zur Verwaltung der Objekt Klassen verwendet
 *wird
 */
class ClassOptions : public QDialog
{
    Q_OBJECT

    /*
     * Ein Eintrag in der Editierbaren Liste mit Klassen
     */
    struct ListItem
    {
        int              id; // Die Id der Klasse des Eintrags
        QListWidgetItem *item; // Der Listeneintrag
    };

public:

    // erstellt den DIalog
    //  seq: Die Sequenz, welche momentan annotiert wird
    //  parent: Das Eltern QWidget von Qt
    explicit ClassOptions(Sequenz *seq,
                          QWidget *parent = 0);
    ~ClassOptions();

private slots:
    // Erstellt eine neue Klasse von Objekten
    void on_newClass_clicked();
    // Löscht eine Klasse von Objekten
    void on_removeClass_clicked();
    // Erlaubt das Klicken auf Löschen
    void on_classList_itemSelectionChanged();
    // Benennt die ausgewählte Klasse um
    void on_classList_itemChanged(QListWidgetItem *item);
    // Beendet das Verwalten der Klassen
    void on_fertig_clicked();

private:
    // Gibt den Index einer Klasse aus der Liste zurück
    int getItemId(QListWidgetItem *item);

    Sequenz *seq; // Ein zeiger auf die annotierte Bildsequenz
    QList<ListItem>   items; // Eine Liste mit Listeneinträgen
    Ui::ClassOptions *ui; // Ein Zeiger auf alle in classoptions.ui spezifizierten Objekte
};

#endif // CLASSOPTIONS_H
