#ifndef CHANGEPACKET_H
#define CHANGEPACKET_H

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

namespace Ui
{
class ChangePacket;
}

/*
 * Verwaltet din GUI Dialog, welcher verwendet wird um den Objekten eine ID
 *zuzuweisen
 */
class ChangePacket : public QDialog
{
    Q_OBJECT

public:

    // Erstellt den Dialog
    //  p: Das Polygon des Objektes, wessen ID zugewiesen werden soll
    //  s: Die Sequenz, welche momentan annotiert wird
    //  parent: Das Eltern QWidget von Qt
    explicit ChangePacket(ObjectPolygon p,
                          Sequenz       *s,
                          QWidget       *parent = 0);
    ~ChangePacket();

protected:

    // verarbeitet Tastatur Events (wird automatisch vom Qt Framework
    // aufgerufen)
    void keyReleaseEvent(QKeyEvent *e) override;

    // verarbeitet Tastatur Events (wird automatisch vom Qt Framework
    // aufgerufen)
    void mousePressEvent(QMouseEvent *e) override;

private slots:

    // Zeigt das neu ausgewählte Vergleichsobjekt an
    void on_packetList_currentIndexChanged(const QString& arg1);
    // Zeigt das Vergleichsobjekt aus einem vorherigen Bild an
    void on_previousePicture_clicked();
    // Zeigt das Vergleichobjekt aus einem nachfolgenden Bild an
    void on_nextPicture_clicked();
    // Bricht das Zuweisen der Objekt-ID ab ohne sie zu speichern
    void on_abbrechen_clicked();
    // Beendet das Zuweisen der Objekt-ID un speichert die neue ID
    void on_speichern_clicked();

private:
    // Wählt automatisch das Vergleichsobjekt aus, welches die ID hat, welche im Textfeld eingegeben wurde
    void updatePreview();

    Ui::ChangePacket *ui; // Ein Zeiger auf die in changepacket.ui spezifizierten Objekte
    Sequenz *seq; // Ein Zeiger auf die annotierte Bildsequenz
    ObjectPolygon object; // Das ObjektPolygon, dessen Objekt-ID geändert werden soll
    int count; // Der index des Vergleichsbildes ausgehend von dem aktuellen Bild (z.B. -1:=1 bild vorher)
    int max; // Die maximale ID eines Objektes
    static int lastId; // Die zuletzt vergebene ID (wird als startwert für neue Zuweisuzngen verwendet)
};

#endif // CHANGEPACKET_H
