fixed an error with calculation per midnight, added a remove pause button and made the Readme better
This commit is contained in:
parent
605fe9a77e
commit
65af7f060b
3 changed files with 212 additions and 49 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue