fixed an error with calculation per midnight, added a remove pause button and made the Readme better

This commit is contained in:
Tronax 2026-05-30 23:21:56 +02:00
parent 605fe9a77e
commit 65af7f060b
3 changed files with 212 additions and 49 deletions

View file

@ -8,35 +8,48 @@
#include <QListWidget> // Widget zur Anzeige der Pausenzeiten
#include <QSpinBox> // Eingabe für numerische Werte (z. B. Stunden/Minuten)
#include <QLabel> // Widget zur Anzeige von Text
#include <QTime>
class WorkTimeCalculator : public QMainWindow {
Q_OBJECT // Erforderlich für Qt-Signal- und Slot-Mechanismus
public:
// Konstruktor und Destruktor
WorkTimeCalculator(); // Initialisiert das GUI und die Logik
~WorkTimeCalculator(); // Speichert Einstellungen beim Schließen
explicit WorkTimeCalculator(QWidget *parent = nullptr); // Initialisiert GUI und Logik
~WorkTimeCalculator() override; // Speichert Einstellungen beim Schließen
private slots:
// Slots für Benutzeraktionen
void addBreak(); // Hinzufügen einer neuen Pause
void addBreak(); // Hinzufügen einer neuen Pause
void removeSelectedBreak(); // Entfernt die markierte Pause
void calculateWorkTime(); // Berechnet die Netto-Arbeitszeit
private:
// Hilfsfunktionen
void loadSettings(); // Lädt gespeicherte Einstellungen
void saveSettings(); // Speichert aktuelle Einstellungen
int totalBreakMinutes() const; // Summe aller Pausen (aus den Item-Daten)
void addBreakItem(int minutes); // Fügt eine Pause als Item mit Datenrolle ein
// Liefert vergangene Minuten zwischen zwei Zeiten und behandelt
// den Überlauf über Mitternacht korrekt (Ende < Start -> +24h).
static int minutesBetween(const QTime &start, const QTime &end, bool *crossesMidnight = nullptr);
static QString formatDuration(int minutes); // "8:05" (Betrag, ohne Vorzeichen)
static QString formatSignedDuration(int minutes); // "+1:15" / "-0:45"
// GUI-Komponenten
QTimeEdit *startTimeEdit; // Widget für die Einstempelzeit
QTimeEdit *endTimeEdit; // Widget für die Ausstempelzeit (optional)
QPushButton *addBreakButton; // Button, um eine Pause hinzuzufügen
QPushButton *calculateButton; // Button, um die Arbeitszeit zu berechnen
QCheckBox *includeEndTimeCheckbox; // Checkbox zur Aktivierung der Ausstempelzeit
QListWidget *breakList; // Liste der eingegebenen Pausenzeiten
QSpinBox *dailyHoursSpin; // Eingabe für tägliche Sollarbeitszeit (Stunden)
QSpinBox *dailyMinutesSpin; // Eingabe für tägliche Sollarbeitszeit (Minuten)
QLabel *resultLabel; // Anzeige für das Ergebnis der Berechnung
QTimeEdit *startTimeEdit; // Widget für die Einstempelzeit
QTimeEdit *endTimeEdit; // Widget für die Ausstempelzeit (optional)
QPushButton *addBreakButton; // Button, um eine Pause hinzuzufügen
QPushButton *removeBreakButton; // Button, um eine Pause zu entfernen
QPushButton *calculateButton; // Button, um die Arbeitszeit zu berechnen
QCheckBox *includeEndTimeCheckbox; // Checkbox zur Aktivierung der Ausstempelzeit
QListWidget *breakList; // Liste der eingegebenen Pausenzeiten
QSpinBox *dailyHoursSpin; // Eingabe für tägliche Sollarbeitszeit (Stunden)
QSpinBox *dailyMinutesSpin; // Eingabe für tägliche Sollarbeitszeit (Minuten)
QLabel *resultLabel; // Anzeige für das Ergebnis der Berechnung
static constexpr int BreakRole = Qt::UserRole; // Datenrolle für die Pausenminuten
};
#endif // WORKTIMECALCULATOR_H