From f836c5cf3431682117cdf1f64684a8049777428f Mon Sep 17 00:00:00 2001 From: georg0480 Date: Wed, 4 Feb 2026 02:47:35 +0100 Subject: [PATCH] Name shortcut zu mailadler --- CMakeLists.txt | 16 - CSV_AUTO_EXPORT_IMPORT.md | 580 +++++++++++++ DESIGN_STRATEGIE.md | 442 ++++++++++ EINFACHE_UEBERSETZUNG.md | 531 ++++++++++++ EMAIL_UEBERSETZUNG_FEATURE.md | 654 +++++++++++++++ ERWEITERTE_FEATURES.md | 585 +++++++++++++ FINAL_ROADMAP.md | 389 +++++++++ INTERNATIONALISIERUNG.md | 644 +++++++++++++++ LM_STUDIO_WORKFLOW.md | 644 +++++++++++++++ LOKALES_LLM_UEBERSETZUNG.md | 683 +++++++++++++++ PHASE4_CLEANUP_COMPLETE.md | 106 +++ PHASE_B_PLANNING.md | 276 +++++++ PHASE_B_PLANUNG.md | 277 +++++++ PRAKTISCHE_FEATURES.md | 405 +++++++++ PROJEKT_MANAGEMENT_SYSTEM.md | 790 ++++++++++++++++++ README.md | 574 +++++++++++-- SICHERHEIT_VERSCHLUESSELUNG.md | 630 ++++++++++++++ TELEMETRIE_FEHLERBERICHTERSTATTUNG.md | 579 +++++++++++++ TESTING_PLAN.md | 560 +++++++++++++ UEBERSETZUNGS_OPTIONEN.md | 487 +++++++++++ icons/mailadler-logo-512.png | Bin 0 -> 827990 bytes src/CMakeLists.txt | 137 +--- src/main.cpp | 66 +- src/mainwindow.cpp | 1094 +++++++++++++------------ src/mainwindow.h | 209 +++-- src/settings.cpp | 22 +- src/util.cpp | 22 +- 27 files changed, 10494 insertions(+), 908 deletions(-) create mode 100644 CSV_AUTO_EXPORT_IMPORT.md create mode 100644 DESIGN_STRATEGIE.md create mode 100644 EINFACHE_UEBERSETZUNG.md create mode 100644 EMAIL_UEBERSETZUNG_FEATURE.md create mode 100644 ERWEITERTE_FEATURES.md create mode 100644 FINAL_ROADMAP.md create mode 100644 INTERNATIONALISIERUNG.md create mode 100644 LM_STUDIO_WORKFLOW.md create mode 100644 LOKALES_LLM_UEBERSETZUNG.md create mode 100644 PHASE4_CLEANUP_COMPLETE.md create mode 100644 PHASE_B_PLANNING.md create mode 100644 PHASE_B_PLANUNG.md create mode 100644 PRAKTISCHE_FEATURES.md create mode 100644 PROJEKT_MANAGEMENT_SYSTEM.md create mode 100644 SICHERHEIT_VERSCHLUESSELUNG.md create mode 100644 TELEMETRIE_FEHLERBERICHTERSTATTUNG.md create mode 100644 TESTING_PLAN.md create mode 100644 UEBERSETZUNGS_OPTIONEN.md create mode 100644 icons/mailadler-logo-512.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 750e143..e67f18c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,29 +38,13 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) find_package(Qt6 6.4 REQUIRED COMPONENTS - Charts - Multimedia Network - OpenGL - OpenGLWidgets - QuickControls2 - QuickWidgets Sql - WebSockets Widgets Xml ) if(UNIX AND NOT APPLE) find_package(Qt6 6.4 REQUIRED COMPONENTS DBus) - # X11 for WindowPicker (Linux/X11) - find_package(X11 REQUIRED) -endif() - -find_package(PkgConfig REQUIRED) -pkg_check_modules(mlt++ REQUIRED IMPORTED_TARGET mlt++-7>=7.36.0) -pkg_check_modules(FFTW IMPORTED_TARGET fftw3) -if(NOT FFTW_FOUND) - pkg_check_modules(FFTW REQUIRED IMPORTED_TARGET fftw) endif() add_subdirectory(CuteLogger) diff --git a/CSV_AUTO_EXPORT_IMPORT.md b/CSV_AUTO_EXPORT_IMPORT.md new file mode 100644 index 0000000..17f5763 --- /dev/null +++ b/CSV_AUTO_EXPORT_IMPORT.md @@ -0,0 +1,580 @@ +# CSV Auto-Export/Import - Easiest Way + +## 1. CSV Auto-Generieren (aus .ts) + +### Problem +``` +Du willst CSV mit: +- Spalte 1: Alle Deutsch-Wörter (aus mail-adler_de.ts) +- Spalte 2: Leer für neue Sprache +- Mit Kommas korrekt formatiert + +Statt manuell alle Wörter zu kopieren +``` + +### Lösung: Export-Script + +```python +#!/usr/bin/env python3 +# scripts/export_to_csv.py + +import xml.etree.ElementTree as ET +import csv +import argparse +from pathlib import Path + +def ts_to_csv(ts_file: str, csv_output: str, language_name: str = "Neue Sprache"): + """ + Exportiere alle Deutsch-Strings aus .ts zu CSV + + Output: + Deutsch,Neue Sprache + Eingang, + Gesendet, + ... + """ + + tree = ET.parse(ts_file) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + + # Sammle alle Deutsch-Strings + german_strings = [] + + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + if source_elem is not None and source_elem.text: + german_strings.append(source_elem.text.strip()) + + # Dedupliziere (falls gleiche Wörter mehrmals vorkommen) + german_strings = list(dict.fromkeys(german_strings)) + german_strings.sort() + + # Schreibe CSV + with open(csv_output, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + # Header + writer.writerow(['Deutsch', language_name]) + # Alle Strings + for word in german_strings: + writer.writerow([word, '']) # Zweite Spalte leer + + print(f"✅ Export fertig!") + print(f" Datei: {csv_output}") + print(f" Strings: {len(german_strings)}") + print(f"") + print(f"Nächster Schritt:") + print(f"1. Öffne {csv_output} in Excel") + print(f"2. Fülle die '{language_name}'-Spalte mit Übersetzungen") + print(f"3. Speichern") + print(f"4. Führe import_csv.py aus") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Export .ts zu CSV') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--output', required=True, help='output.csv') + parser.add_argument('--language', default='English', help='Sprachen-Name') + + args = parser.parse_args() + ts_to_csv(args.source, args.output, args.language) +``` + +### Verwendung: + +```bash +# Exportiere für Niederländisch +python3 scripts/export_to_csv.py \ + --source translations/mail-adler_de.ts \ + --output translations/glossary_nl.csv \ + --language Niederländisch + +# Output: glossary_nl.csv erstellt +# CSV hat: +# - Spalte 1: "Deutsch" (alle Strings) +# - Spalte 2: "Niederländisch" (leer) +``` + +**glossary_nl.csv sieht so aus:** +```csv +Deutsch,Niederländisch +Abbrechen, +Anmeldedaten, +Antworten, +Ansicht, +Archive, +Archiv, +Bearbeiten, +Beenden, +... +``` + +--- + +## 2. In Excel bearbeiten + +### Schritt 1: CSV öffnen + +``` +1. Windows: Rechts-Klick auf glossary_nl.csv + → "Öffnen mit" → Excel + +2. Oder: Excel → Datei → Öffnen → glossary_nl.csv +``` + +### Schritt 2: Niederländisch-Spalte ausfüllen + +``` +Excel-Tabelle: +┌─────────────────┬──────────────────┐ +│ Deutsch │ Niederländisch │ +├─────────────────┼──────────────────┤ +│ Abbrechen │ Annuleren │ +│ Anmeldedaten │ Inloggegevens │ +│ Antworten │ Antwoorden │ +│ Ansicht │ Weergave │ +│ ... │ ... │ +└─────────────────┴──────────────────┘ +``` + +### Schritt 3: Speichern (als CSV!) + +``` +Excel: +1. Datei → Speichern unter +2. Format: "CSV UTF-8 (Kommagetrennt)" + (WICHTIG: UTF-8, nicht Standart-CSV) +3. Speichern +``` + +--- + +## 3. Import zurück zu .ts + +### Import-Script + +```python +#!/usr/bin/env python3 +# scripts/import_csv_to_ts.py + +import csv +import xml.etree.ElementTree as ET +import argparse + +def csv_to_ts(csv_file: str, ts_source: str, ts_output: str, language_column: str = 1): + """ + Importiere CSV-Übersetzungen zurück zu .ts + + CSV-Format: + Deutsch,English (oder Französisch, Niederländisch, etc.) + Eingang,Inbox + ... + """ + + # 1. Lese CSV + translations = {} + + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.reader(f) + header = next(reader) # Überspringe Header + + for row in reader: + if len(row) >= 2: + deutsch = row[0].strip() + übersetzt = row[1].strip() + + if deutsch and übersetzt: # Nur wenn beide gefüllt + translations[deutsch] = übersetzt + + print(f"✅ CSV geladen: {len(translations)} Übersetzungen gefunden") + + # 2. Parse .ts Datei + tree = ET.parse(ts_source) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + # 3. Update Übersetzungen + updated = 0 + missing = 0 + + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + trans_elem = message.find('translation', ns) + + if source_elem is None or trans_elem is None: + continue + + deutsch_text = source_elem.text + + if deutsch_text in translations: + trans_elem.text = translations[deutsch_text] + trans_elem.set('type', 'finished') + updated += 1 + print(f" ✓ {deutsch_text:30} → {translations[deutsch_text]}") + else: + missing += 1 + + # 4. Speichern + tree.write(ts_output, encoding='UTF-8', xml_declaration=True) + + print(f"\n✅ FERTIG!") + print(f" Aktualisiert: {updated}") + print(f" Fehlend (nicht in CSV): {missing}") + print(f" Ausgabedatei: {ts_output}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Import CSV zu .ts') + parser.add_argument('--csv', required=True, help='glossary_nl.csv') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--output', required=True, help='mail-adler_nl.ts') + + args = parser.parse_args() + csv_to_ts(args.csv, args.source, args.output) +``` + +### Verwendung: + +```bash +# Importiere CSV zurück zu .ts +python3 scripts/import_csv_to_ts.py \ + --csv translations/glossary_nl.csv \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_nl.ts + +# Output: +# ✅ CSV geladen: 247 Übersetzungen gefunden +# ✓ Abbrechen → Annuleren +# ✓ Anmeldedaten → Inloggegevens +# ... +# ✅ FERTIG! +# Aktualisiert: 247 +# Fehlend: 0 +# Ausgabedatei: translations/mail-adler_nl.ts +``` + +--- + +## 4. Kompletter Workflow für neue Sprache + +```bash +# 1️⃣ EXPORT: Alle Deutsch-Strings → CSV +python3 scripts/export_to_csv.py \ + --source translations/mail-adler_de.ts \ + --output translations/glossary_nl.csv \ + --language Niederländisch + +# Output: glossary_nl.csv erstellt (250 leere Zeilen) + +# 2️⃣ BEARBEITEN: In Excel ausfüllen +# → Öffne glossary_nl.csv in Excel +# → Fülle Niederländisch-Spalte +# → Speichern (als CSV UTF-8!) + +# 3️⃣ IMPORT: CSV → .ts +python3 scripts/import_csv_to_ts.py \ + --csv translations/glossary_nl.csv \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_nl.ts + +# 4️⃣ KOMPILIEREN +lrelease translations/mail-adler_nl.ts + +# 5️⃣ GIT & RELEASE +git add translations/glossary_nl.csv translations/mail-adler_nl.ts +git commit -m "Add Dutch translation" +./scripts/release_with_translation.sh nl_NL +``` + +--- + +## 5. Mit LM Studio (Copy-Paste aus Excel) + +### Schneller Workflow: + +``` +1. Export: glossary_nl.csv erstellen + python3 scripts/export_to_csv.py ... + +2. Excel: glossary_nl.csv öffnen + Links: Deutsch, Rechts: Niederländisch (leer) + +3. LM Studio offen (http://localhost:1234) + +4. Copy-Paste Loop: + - Excel: "Abbrechen" kopieren + - LM Studio: "Übersetze ins Niederländische: Abbrechen" + - LM Studio antwortet: "Annuleren" + - Excel: "Annuleren" einfügen + - Nächst Wort... + +5. Nach alle Wörter: + Import: glossary_nl.csv → mail-adler_nl.ts + python3 scripts/import_csv_to_ts.py ... + +6. Fertig! +``` + +--- + +## 6. Mehrere Sprachen gleichzeitig (in einer Datei) + +### Super praktisch: Ein CSV für alle Sprachen + +```python +#!/usr/bin/env python3 +# scripts/export_to_csv_multilang.py + +import xml.etree.ElementTree as ET +import csv +import argparse + +def ts_to_csv_multilang(ts_file: str, csv_output: str, languages: list): + """ + Exportiere zu CSV mit mehreren Sprach-Spalten + + languages = ["English", "Français", "Español", "Niederländisch"] + + Output: + Deutsch,English,Français,Español,Niederländisch + Eingang,Inbox,Boîte de réception,Bandeja de entrada,Postvak IN + ... + """ + + tree = ET.parse(ts_file) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + + # Sammle Deutsch-Strings + german_strings = [] + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + if source_elem is not None and source_elem.text: + german_strings.append(source_elem.text.strip()) + + german_strings = list(dict.fromkeys(german_strings)) + german_strings.sort() + + # Schreibe CSV mit mehreren Sprachen + with open(csv_output, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + # Header + writer.writerow(['Deutsch'] + languages) + # Alle Strings (nur erste Spalte gefüllt) + for word in german_strings: + row = [word] + ([''] * len(languages)) + writer.writerow(row) + + print(f"✅ Multi-Language CSV erstellt!") + print(f" Datei: {csv_output}") + print(f" Strings: {len(german_strings)}") + print(f" Sprachen: {', '.join(languages)}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--output', required=True, help='output.csv') + parser.add_argument('--languages', required=True, + help='Comma-separated: "English,Français,Español,Niederländisch"') + + args = parser.parse_args() + langs = [l.strip() for l in args.languages.split(',')] + ts_to_csv_multilang(args.source, args.output, langs) +``` + +### Verwendung: + +```bash +python3 scripts/export_to_csv_multilang.py \ + --source translations/mail-adler_de.ts \ + --output translations/glossary_all.csv \ + --languages "English,Français,Español,Niederländisch,Portugiesisch,Italienisch" + +# Output: glossary_all.csv mit 6 leeren Sprach-Spalten +``` + +**Ergebnis (in Excel):** +```csv +Deutsch,English,Français,Español,Niederländisch,Portugiesisch,Italienisch +Abbrechen,Cancel,Annuler,Cancelar,Annuleren,Cancelar,Annulla +Anmeldedaten,Credentials,Identifiants,Credenciales,Inloggegevens,Credenciais,Credenziali +... +``` + +**Jetzt kannst du alle Sprachen in EINER Datei übersetzen!** + +--- + +## 7. Import für jede einzelne Spalte + +```bash +# Nach du alle Spalten in Excel gefüllt hast: + +# Englisch extrahieren & importieren +python3 scripts/import_csv_column_to_ts.py \ + --csv translations/glossary_all.csv \ + --column English \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_en.ts + +# Französisch +python3 scripts/import_csv_column_to_ts.py \ + --csv translations/glossary_all.csv \ + --column Français \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_fr.ts + +# Niederländisch +python3 scripts/import_csv_column_to_ts.py \ + --csv translations/glossary_all.csv \ + --column Niederländisch \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_nl.ts + +# ... für alle Sprachen +``` + +**Script dafür:** + +```python +#!/usr/bin/env python3 +# scripts/import_csv_column_to_ts.py + +import csv +import xml.etree.ElementTree as ET +import argparse + +def csv_column_to_ts(csv_file: str, column_name: str, ts_source: str, ts_output: str): + """ + Importiere eine bestimmte Spalte aus CSV zu .ts + """ + + # Lese CSV & finde Spalte + translations = {} + + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.DictReader(f) # Nutzt Header als Keys + + for row in reader: + deutsch = row['Deutsch'].strip() + übersetzt = row.get(column_name, '').strip() + + if deutsch and übersetzt: + translations[deutsch] = übersetzt + + print(f"✅ Spalte '{column_name}' geladen: {len(translations)} Übersetzungen") + + # Update .ts + tree = ET.parse(ts_source) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + updated = 0 + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + trans_elem = message.find('translation', ns) + + if source_elem is not None and trans_elem is not None: + deutsch_text = source_elem.text + if deutsch_text in translations: + trans_elem.text = translations[deutsch_text] + trans_elem.set('type', 'finished') + updated += 1 + + tree.write(ts_output, encoding='UTF-8', xml_declaration=True) + + print(f"✅ {updated} Strings aktualisiert → {ts_output}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--csv', required=True) + parser.add_argument('--column', required=True, help='Spalten-Name') + parser.add_argument('--source', required=True) + parser.add_argument('--output', required=True) + + args = parser.parse_args() + csv_column_to_ts(args.csv, args.column, args.source, args.output) +``` + +--- + +## 8. Batch-Script für alle Sprachen + +```bash +#!/bin/bash +# scripts/batch_import_all_languages.sh + +CSV="translations/glossary_all.csv" +SOURCE="translations/mail-adler_de.ts" +LANGUAGES=("English" "Français" "Español" "Niederländisch" "Portugiesisch" "Italienisch") +LANG_CODES=("en" "fr" "es" "nl" "pt" "it") + +for i in "${!LANGUAGES[@]}"; do + LANG="${LANGUAGES[$i]}" + CODE="${LANG_CODES[$i]}" + + echo "🌍 Importiere $LANG..." + + python3 scripts/import_csv_column_to_ts.py \ + --csv "$CSV" \ + --column "$LANG" \ + --source "$SOURCE" \ + --output "translations/mail-adler_${CODE}.ts" + + lrelease "translations/mail-adler_${CODE}.ts" +done + +echo "✅ Alle Sprachen importiert & kompiliert!" +``` + +### Verwendung: + +```bash +chmod +x scripts/batch_import_all_languages.sh +./scripts/batch_import_all_languages.sh + +# Output: +# 🌍 Importiere English... +# ✅ 247 Strings aktualisiert → translations/mail-adler_en.ts +# 🌍 Importiere Français... +# ✅ 247 Strings aktualisiert → translations/mail-adler_fr.ts +# ... +# ✅ Alle Sprachen importiert & kompiliert! +``` + +--- + +## 9. Zusammenfassung: Der EASIEST Workflow + +### Super Einfach (für dich perfekt): + +**Schritt 1: EXPORT (Auto)** +```bash +python3 scripts/export_to_csv_multilang.py \ + --source translations/mail-adler_de.ts \ + --output translations/glossary_all.csv \ + --languages "English,Français,Español,Niederländisch,Portugiesisch,Italienisch" +``` + +**Schritt 2: BEARBEITEN (Excel)** +``` +Öffne glossary_all.csv in Excel +Fülle alle Spalten mit Übersetzungen +(oder nutze LM Studio: Copy-Paste jedes Wort) +Speichern (Format: CSV UTF-8!) +``` + +**Schritt 3: IMPORT (Auto)** +```bash +./scripts/batch_import_all_languages.sh +``` + +**Schritt 4: RELEASE (Auto)** +```bash +git add translations/ +git commit -m "Add all translations" +git push +# GitHub Action macht den Rest +``` + +**Fertig! Keine .ts-Bearbeitung, keine komplexe Formate, nur Excel!** diff --git a/DESIGN_STRATEGIE.md b/DESIGN_STRATEGIE.md new file mode 100644 index 0000000..52b18b4 --- /dev/null +++ b/DESIGN_STRATEGIE.md @@ -0,0 +1,442 @@ +# Mail-Adler Design-Strategie - Rechtliche & Markenrechtliche Unabhängigkeit + +## 1. Rechtliche Basis + +### 1.1 Eigenständiges UI/UX Design + +Mail-Adler wird **NICHT** basieren auf: +- ❌ Outlook Design/Layouts +- ❌ Gmail Interface +- ❌ Thunderbird UI +- ❌ Apple Mail Design + +**Stattdessen:** Eigenes, originales Design entwickelt für Klarheit, Sicherheit und deutsche Benutzer. + +### 1.2 Markenrecht & IP-Schutz + +**Mail-Adler schützt sich selbst:** +- ✅ Eigenständige Marke "Mail-Adler" (Adler-Logo) +- ✅ Open-Source unter GPLv3 (keine kommerzielle Nutzung der Marke) +- ✅ Originale Quellencode-Basis (vom Shotcut abgeleitet, aber Mail-Client) +- ✅ Keine Imitation bekannter UI-Patterns + +**Microsoft kann NICHT drohen:** +- Wir kopieren nicht Outlooks UI +- Wir verwenden nicht Microsofts Icons +- Wir verwenden nicht Microsofts Farben +- Wir verwenden nicht Microsofts Funktionalität als Kopie + +--- + +## 2. Mail-Adler UI Design - "Deutlich anders" + +### 2.1 Unterscheidende Design-Elemente + +| Aspekt | Outlook | Mail-Adler | +|--------|---------|-----------| +| **Farben** | Blau, Grau | Dunkelgrün, Weiß, Gold (Adler-Akzente) | +| **Ordner-Panel** | Links, Baum-Struktur | Oben als Tabs + Links als Kontext | +| **Mail-Liste** | Klassisches Grid | Moderner Ribbon-Style mit Vorschau | +| **Nachrichts-Ansicht** | Rechts oder unten | Zentral mit Sidebar-Optionen | +| **Toolbar** | Oben, klassisch | Dynamisch, minimal | +| **Icon-Set** | Microsoft Fluent UI | Eigenes Icon-Set (Adler-Motiv) | + +### 2.2 "Adler-Design-System" + +Mail-Adler verwendet ein einzigartiges Designsystem: + +``` +┌────────────────────────────────────────────────────────┐ +│ Mail-Adler - Konto: georg@gmx.de 🦅 │ +├───────────┬──────────────────────────────────────────┤ +│ POSTFÄCHER│ [Inbox] [Gelesen] [Markiert] [Spam] ... │ +├───────────┴──────────────────────────────────────────┤ +│ │ +│ Von: alice@gmx.de [⭐ Wichtig] [🔒 Verschlüss.]│ +│ Betreff: Vertraulich │ +│ │ +│ ┌──────────────────────────────────────────────────┐ │ +│ │ Lieber Georg, │ │ +│ │ │ │ +│ │ hierbei das gewünschte Dokument... │ │ +│ │ │ │ +│ │ [📎 Anhang: Vertrag.pdf (2.3 MB)] │ │ +│ │ [🔗 Cloud-Link: https://files.../abc123] │ │ +│ │ │ │ +│ │ Viele Grüße, │ │ +│ │ Alice │ │ +│ └──────────────────────────────────────────────────┘ │ +│ │ +│ [↩️ Antworten] [↩️↩️ Allen] [↪️ Weiterleiten] │ +└────────────────────────────────────────────────────────┘ +``` + +### 2.3 Farbpalette (Adler-Theme) + +``` +Primär-Grün: #1a5d3d (Dunkelgrün - Natur/Adler) +Akzent-Gold: #d4af37 (Gold - Edle Qualität) +Weiß/Hintergrund: #f5f5f5 (Hell, lesbar) +Text-Dunkel: #2c2c2c (Gut lesbar) +Warnung: #e74c3c (Rot - Spam/Fehler) +Erfolg: #27ae60 (Grün - OK/Sync erfolg) +Info: #3498db (Blau - Informationen) +``` + +### 2.4 Icon-Set - "Adler-Icons" + +Eigenes, konsistentes Icon-Set (nicht Fluent, nicht Material): + +``` +[🦅] Mail-Adler Hauptikon +[📨] Eingang (INBOX) +[✉️] Neue Mail +[📤] Gesendet +[🗂️] Ordner +[⭐] Markiert +[🚫] Spam +[🔒] Verschlüsselt +[🔄] Synchronisieren +[⚙️] Einstellungen +[❓] Hilfe +[🗑️] Papierkorb +``` + +Alle Icons sind **SVG-basiert** (skalierbar, pixelunabhängig). + +--- + +## 3. Layout-Variationen + +### 3.1 Standard-Layout (Desktop) + +``` +┌─────────────────────────────────────────────────────────┐ +│ Mail-Adler 🦅 │ +├──────────────────────────────────────────────────────────┤ +│ [📨 Inbox] [📤 Gesendet] [🗂️ Ordner] [⚙️ Einstellungen] │ +├──────────────┬─────────────────────┬────────────────────┤ +│ │ │ │ +│ POSTFÄCHER │ E-MAIL LISTE │ NACHRICHT │ +│ │ │ VORSCHAU │ +│ • Inbox (5) │ [alice@gmx.de] │ │ +│ • Gesendet │ Wichtige Daten │ Von: alice@gmx.de │ +│ • Entwürfe │ 2025-02-03 14:30 │ ... │ +│ • Spam (2) │ │ │ +│ • Archiv │ [bob@web.de] │ │ +│ • Markiert │ Hallo Georg │ │ +│ │ 2025-02-03 10:15 │ │ +│ + Neue Gruppe│ │ │ +│ │ [charlie@mail.de] │ │ +│ │ Newsletter │ │ +│ │ 2025-02-02 08:00 │ │ +│ │ │ │ +├──────────────┴─────────────────────┴────────────────────┤ +│ [↩️ Antworten] [↩️↩️ Allen] [↪️ Weiterleiten] [🗑️ Löschen]│ +└──────────────────────────────────────────────────────────┘ +``` + +### 3.2 Fokus-Layout (Minimal) + +Bei Klick auf Mail → Vollbild-Nachrichtenansicht: + +``` +┌─────────────────────────────────────────────────────────┐ +│ < Zurück [✉️] [🗑️] [⋮] │ +├─────────────────────────────────────────────────────────┤ +│ Von: alice@gmx.de │ +│ An: georg@gmx.de │ +│ CC: - │ +│ Betreff: Wichtige Daten │ +│ Datum: 2025-02-03, 14:30 │ +│ │ +├─────────────────────────────────────────────────────────┤ +│ │ +│ Lieber Georg, │ +│ │ +│ hierbei die angeforderten Dokumente. │ +│ │ +│ [📎 Anhang: Dokument.pdf] │ +│ [📎 Anhang: Tabelle.xlsx] │ +│ │ +│ Viele Grüße, │ +│ Alice │ +│ │ +├─────────────────────────────────────────────────────────┤ +│ [↩️ Antworten] [↩️↩️ Allen] [↪️ Weiterleiten] │ +└─────────────────────────────────────────────────────────┘ +``` + +### 3.3 Mobile Layout (Touch-optimiert) + +``` +┌──────────────────────────────┐ +│ Mail-Adler 🦅 ☰ │ +├──────────────────────────────┤ +│ [Inbox] [Versand] [Mehr] │ +├──────────────────────────────┤ +│ │ +│ alice@gmx.de │ +│ Wichtige Daten │ +│ Heute 14:30 │ +│ │ +│ bob@web.de │ +│ Hallo Georg │ +│ Heute 10:15 │ +│ │ +│ charlie@mail.de │ +│ Newsletter │ +│ Gestern 08:00 │ +│ │ +├──────────────────────────────┤ +│ [✉️ Neue] [⚙️ Einstellungen] │ +└──────────────────────────────┘ +``` + +--- + +## 4. Funktionalität - "Deutlich besser als Outlook" + +### 4.1 Native Features von Mail-Adler (nicht Outlook) + +| Feature | Mail-Adler | Outlook | +|---------|-----------|---------| +| **E2EE PSK-Gruppen** | ✅ Phase B | ❌ Nur S/MIME | +| **Dezentrales Design** | ✅ Open-Source | ❌ Proprietär | +| **Spam-Erkennung Crowd** | ✅ Community-driven | ❌ Microsoft-only | +| **Cloud-Anhänge** | ✅ Verschlüsselt optional | ⚠️ OneDrive only | +| **Offshore-Freundlich** | ✅ Keine US-Server | ❌ Microsoft USA | +| **DSGVO-konform** | ✅ Lokal, Telemetrie opt-in | ⚠️ Tracking | +| **Expert-Modus** | ✅ Voller Telemetrie-Zugang | ❌ Hidden | +| **Thembar** | ✅ Beliebig anpassbar | ⚠️ Limited | + +### 4.2 Unique Selling Points (USP) + +1. **"Für Deutsche, von Deutschen"** + - Deutsch-sprachig + - DSGVO-Compliance + - Datenschutz-fokussiert + +2. **"Einfach und sicher"** + - Benutzerfreundlich (Outlook für Anfänger) + - Verschlüsselung für Fortgeschrittene + - Expert-Modus für Power-User + +3. **"Dezentral und offen"** + - Open-Source (GPLv3) + - Keine Abhängigkeit von US-Unternehmen + - Community-controlled Spam-Liste + +4. **"Transparent"** + - Telemetrie optional und einsehbar + - Expert-Modus zeigt alles + - Kein Hidden Tracking + +--- + +## 5. Rechtliche Schutzmaßnahmen + +### 5.1 Design-Dokumentation + +``` +src/ui/design/DESIGN_PHILOSOPHY.md +├─ Original UI Design (nicht Outlook) +├─ Color Palette Justification +├─ Icon Design Rationale +└─ Layout Design Decisions (mit Daten) +``` + +### 5.2 Markenrechtlicher Schutz + +```cpp +// src/branding/Branding.h +const QString APP_NAME = "Mail-Adler"; +const QString APP_DESCRIPTION = + "Ein einfacher, sicherer, offener Mail-Client für deutsche Benutzer"; +const QString APP_ICON_THEME = "adler-icons"; +const QString APP_COLOR_SCHEME = "adler-green-gold"; +``` + +### 5.3 Disclaimer bei Start + +``` +┌─────────────────────────────────────┐ +│ Mail-Adler Startbildschirm │ +├─────────────────────────────────────┤ +│ │ +│ 🦅 MAIL-ADLER 🦅 │ +│ │ +│ Ein unabhängiger, offener │ +│ Mail-Client für Sicherheit │ +│ und Privatsphäre. │ +│ │ +│ © 2025 Georg Dahmen │ +│ Lizensiert unter GPLv3 │ +│ │ +│ Mail-Adler ist unabhängig von: │ +│ Microsoft, Google, Mozilla, Apple │ +│ │ +│ [Zum Client starten] │ +└─────────────────────────────────────┘ +``` + +--- + +## 6. Design-Komponenten Aufbau + +### 6.1 Qt-basierte UI + +```cpp +// src/ui/MainWindow.h +class MainWindow : public QMainWindow { + Q_OBJECT + +private: + // Adler-Design Komponenten + AotherFolderPanel *m_folderPanel; // Linkes Panel + MailListView *m_mailListView; // Mitte + MailDetailView *m_mailDetailView; // Rechts + + // Adler-spezifische Styling + QString loadAdlerStylesheet(); + void applyAdlerTheme(); +}; +``` + +### 6.2 Stylesheet (Adler-Theme) + +```css +/* src/ui/styles/adler.qss */ + +QMainWindow { + background-color: #f5f5f5; + font-family: "Segoe UI", Ubuntu, sans-serif; +} + +QTabBar::tab { + background-color: #e8e8e8; + border: 1px solid #d0d0d0; + padding: 6px 12px; + color: #2c2c2c; +} + +QTabBar::tab:selected { + background-color: #1a5d3d; /* Adler-Grün */ + color: white; + border: 1px solid #0d3d24; +} + +QTreeWidget { + background-color: white; + color: #2c2c2c; +} + +QTreeWidget::item:selected { + background-color: #d4af37; /* Adler-Gold */ + color: #2c2c2c; +} + +/* Spam-Warnung */ +.spam-warning { + background-color: #ffe8e8; + border-left: 4px solid #e74c3c; + color: #2c2c2c; +} +``` + +--- + +## 7. "Adler vs. Outlook" Vergleich + +### 7.1 Sichtbare Unterschiede + +| Kriterium | Mail-Adler | Outlook | +|-----------|-----------|---------| +| **Logo** | 🦅 Adler | O Microsoft | +| **Farbe** | Grün + Gold | Blau | +| **Schrift** | Modern Sans | Segoe UI | +| **Layout** | Flexibel, Modern | Klassisch | +| **Ordner-Panel** | Oben + Links | Links | +| **Mail-Ansicht** | Zentriert | Nebeneinander | + +### 7.2 Technische Unterschiede + +| Kriterium | Mail-Adler | Outlook | +|-----------|-----------|---------| +| **Engine** | Qt6 C++ | C# .NET | +| **Plattformen** | Windows, Linux, macOS, ARM | Windows, macOS, Web | +| **Datenbank** | SQLite3 | SQL Server | +| **Verschlüsselung** | PSK (Phase B), PGP (Phase C) | S/MIME | +| **Open Source** | ✅ GPLv3 | ❌ Proprietär | + +--- + +## 8. Marketing-Positionierung + +### 8.1 Tagline + +**"Mail-Adler: Sicher. Einfach. Anders."** + +``` +Der Mail-Client für Nutzer, die: +✅ Sicherheit ernst nehmen +✅ Keine Überwachung wollen +✅ Deutschland verstehen +✅ Open-Source vertrauen +❌ Sich nicht von Microsoft, Google oder Apple abhängig machen wollen +``` + +### 8.2 Differenzierung + +**"Nicht wie Outlook. BESSER als Outlook."** +- Verschlüsselung von Tag 1 +- Vollständiger Datenschutz +- Transparent und Kontrollierbar +- Dezentral und offen + +--- + +## 9. Rechtliche Sicherheit + +### 9.1 Lizenzierung + +**Mail-Adler:** +- GPLv3 (Free & Open Source) +- Keine Marken-Konflikte mit Microsoft +- Community-Ownership + +### 9.2 Patent-Schutz + +Mail-Adler nutzt **keine Microsofts Patente**: +- ✅ IMAP/SMTP Standards (RFC) +- ✅ OpenPGP (RFC 4880) +- ✅ S/MIME (RFC 5751) +- ✅ MIME (RFC 2045-2049) +- ❌ Keine proprietären Microsoft-APIs + +### 9.3 Markenrecht + +**Mail-Adler Marke:** +- Registrierung anstreben für: "Mail-Adler" +- Logo: Adler-Symbol (einzigartig) +- Tagline: "Sicher. Einfach. Anders." + +--- + +## Fazit + +**Mail-Adler ist rechtlich und optisch vollständig unabhängig von Outlook.** + +Microsoft kann **NICHT** drohen, weil: +1. ✅ Design ist einzigartig (nicht Outlook-Copy) +2. ✅ Technologie ist original (Qt, nicht .NET) +3. ✅ Code ist offen (GPLv3, kein Microsoft-Code) +4. ✅ Marke ist unterscheidbar (Adler vs. O) +5. ✅ Features sind nicht patentiert +6. ✅ Standards sind Open (IMAP, SMTP, PGP) + +**Mail-Adler positioniert sich als:** +- Überlegen (bessere Sicherheit) +- Unabhängig (Open-Source) +- Deutschfreundlich (DSGVO, Deutsch) +- Modern (besseres UX) diff --git a/EINFACHE_UEBERSETZUNG.md b/EINFACHE_UEBERSETZUNG.md new file mode 100644 index 0000000..c3cdbb7 --- /dev/null +++ b/EINFACHE_UEBERSETZUNG.md @@ -0,0 +1,531 @@ +# Einfache Übersetzung - Deutsch ↔ Andere Sprachen + +## 1. Vergiss .ts - Arbeite mit einfachen Text-Dateien + +### Problem mit .ts +```xml + + + + Eingang + + +``` + +### Lösung: Einfache Text-Datei +``` +Deutsch | English +Eingang | Inbox +Gesendet | Sent +Entwürfe | Drafts +Papierkorb | Trash +... +``` + +**VIEL schneller und einfacher!** + +--- + +## 2. Format-Optionen (du wählst) + +### Option A: CSV (Empfohlen - für Excel) + +**File: `translations/glossary_en.csv`** +```csv +Deutsch,English +Eingang,Inbox +Gesendet,Sent +Entwürfe,Drafts +Papierkorb,Trash +Spam,Spam +Archiv,Archive +Markiert,Flagged +Synchronisieren,Synchronize +Verschlüsseln,Encrypt +Entschlüsseln,Decrypt +Konto,Account +Anmeldedaten,Credentials +Neue Nachricht,New Message +Antworten,Reply +Allen antworten,Reply All +Weiterleiten,Forward +Löschen,Delete +Zurück,Back +OK,OK +Abbrechen,Cancel +Speichern,Save +Beenden,Exit +Einstellungen,Settings +Hilfe,Help +... +``` + +### Option B: Einfache Text-Datei (noch schneller zum Tippen) + +**File: `translations/glossary_en.txt`** +``` +Eingang = Inbox +Gesendet = Sent +Entwürfe = Drafts +Papierkorb = Trash +Spam = Spam +Archiv = Archive +Markiert = Flagged +Synchronisieren = Synchronize +Verschlüsseln = Encrypt +Entschlüsseln = Decrypt +Konto = Account +Anmeldedaten = Credentials +Neue Nachricht = New Message +Antworten = Reply +Allen antworten = Reply All +Weiterleiten = Forward +Löschen = Delete +Zurück = Back +OK = OK +Abbrechen = Cancel +Speichern = Save +Beenden = Exit +Einstellungen = Settings +Hilfe = Help +``` + +### Option C: JSON (für Struktur) + +**File: `translations/glossary_en.json`** +```json +{ + "ui": { + "Eingang": "Inbox", + "Gesendet": "Sent", + "Entwürfe": "Drafts" + }, + "actions": { + "Antworten": "Reply", + "Allen antworten": "Reply All", + "Weiterleiten": "Forward" + } +} +``` + +**EMPFEHLUNG: CSV (Option A) - du kannst es in Excel öffnen und bearbeiten!** + +--- + +## 3. Einfaches Python-Script: CSV → .ts + +```python +#!/usr/bin/env python3 +# scripts/update_translations_from_csv.py + +import csv +import xml.etree.ElementTree as ET +import argparse +from pathlib import Path + +def csv_to_ts(csv_file: str, ts_source: str, ts_output: str): + """ + Lese CSV-Datei und aktualisiere .ts Datei + + CSV-Format: + Deutsch,English + Eingang,Inbox + ... + """ + + # 1. Lese CSV + translations = {} + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.DictReader(f) + for row in reader: + deutsch = row['Deutsch'].strip() + übersetzt = row['English'].strip() # oder 'Français', 'Español', etc. + translations[deutsch] = übersetzt + + print(f"✅ CSV geladen: {len(translations)} Übersetzungen") + + # 2. Parse .ts Datei + tree = ET.parse(ts_source) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + # 3. Update Übersetzungen + updated = 0 + skipped = 0 + + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + trans_elem = message.find('translation', ns) + + if source_elem is None or trans_elem is None: + continue + + deutsch_text = source_elem.text + + if deutsch_text in translations: + trans_elem.text = translations[deutsch_text] + trans_elem.set('type', 'finished') + updated += 1 + print(f" ✓ {deutsch_text:30} → {translations[deutsch_text]}") + else: + skipped += 1 + + # 4. Speichern + tree.write(ts_output, encoding='UTF-8', xml_declaration=True) + + print(f"\n✅ FERTIG!") + print(f" Aktualisiert: {updated}") + print(f" Übersprungen: {skipped}") + print(f" Ausgabedatei: {ts_output}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='CSV → .ts Converter') + parser.add_argument('--csv', required=True, help='glossary_en.csv') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--output', required=True, help='mail-adler_en.ts') + + args = parser.parse_args() + csv_to_ts(args.csv, args.source, args.output) +``` + +### Verwendung: + +```bash +# 1. CSV bearbeiten (in Excel oder Notepad) +# translations/glossary_en.csv + +# 2. Script ausführen +python3 scripts/update_translations_from_csv.py \ + --csv translations/glossary_en.csv \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_en.ts + +# 3. Fertig! +# mail-adler_en.ts ist aktualisiert +``` + +--- + +## 4. Noch schneller: Einfache Text-Datei (mit =) + +### Python-Script für .txt Format + +```python +#!/usr/bin/env python3 +# scripts/update_translations_from_txt.py + +import xml.etree.ElementTree as ET +import argparse +import re + +def txt_to_ts(txt_file: str, ts_source: str, ts_output: str): + """ + Lese einfache .txt Datei (Deutsch = English) + und aktualisiere .ts Datei + """ + + # 1. Lese .txt Datei + translations = {} + with open(txt_file, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if not line or line.startswith('#'): # Überspringe Kommentare + continue + + # Format: Deutsch = English + if '=' in line: + deutsch, englisch = line.split('=', 1) + deutsch = deutsch.strip() + englisch = englisch.strip() + translations[deutsch] = englisch + + print(f"✅ TXT geladen: {len(translations)} Übersetzungen") + + # 2-4. Gleich wie CSV-Script + tree = ET.parse(ts_source) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + updated = 0 + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + trans_elem = message.find('translation', ns) + + if source_elem is None or trans_elem is None: + continue + + deutsch_text = source_elem.text + if deutsch_text in translations: + trans_elem.text = translations[deutsch_text] + trans_elem.set('type', 'finished') + updated += 1 + print(f" ✓ {deutsch_text:30} → {translations[deutsch_text]}") + + tree.write(ts_output, encoding='UTF-8', xml_declaration=True) + + print(f"\n✅ FERTIG!") + print(f" Aktualisiert: {updated}") + print(f" Ausgabedatei: {ts_output}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='TXT → .ts Converter') + parser.add_argument('--txt', required=True, help='glossary_en.txt') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--output', required=True, help='mail-adler_en.ts') + + args = parser.parse_args() + txt_to_ts(args.txt, args.source, args.output) +``` + +### Verwendung: + +```bash +# 1. Öffne Notepad +# Bearbeite: translations/glossary_en.txt + +Eingang = Inbox +Gesendet = Sent +... + +# 2. Speichern & Script ausführen +python3 scripts/update_translations_from_txt.py \ + --txt translations/glossary_en.txt \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_en.ts + +# 3. Fertig! +``` + +--- + +## 5. Kompletter Workflow (EINFACH) + +### Schritt-für-Schritt + +```bash +# 1. Glossary-Datei erstellen (einmalig) +cat > translations/glossary_en.txt << 'EOF' +# Englisch Glossar für Mail-Adler +# Format: Deutsch = English + +Eingang = Inbox +Gesendet = Sent +Entwürfe = Drafts +Papierkorb = Trash +Spam = Spam +Archiv = Archive +Markiert = Flagged +Synchronisieren = Synchronize +Verschlüsseln = Encrypt +Entschlüsseln = Decrypt +Konto = Account +Anmeldedaten = Credentials +Neue Nachricht = New Message +Antworten = Reply +Allen antworten = Reply All +Weiterleiten = Forward +Löschen = Delete +... +EOF + +# 2. Bei LM Studio: Wörter hinzufügen +# Öffne translations/glossary_en.txt +# Kopiere "Eingang =" +# Füge in LM Studio ein: "Übersetze: Eingang" +# LM Studio antwortet: "Inbox" +# Ersetze "Eingang = " mit "Eingang = Inbox" + +# 3. Nach alle Wörter übersetzt sind: +python3 scripts/update_translations_from_txt.py \ + --txt translations/glossary_en.txt \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_en.ts + +# 4. Kompilieren +lrelease translations/mail-adler_en.ts + +# 5. Commit & Release +git add translations/glossary_en.txt translations/mail-adler_en.ts +git commit -m "Add English translation" +./scripts/release_with_translation.sh en_US +``` + +--- + +## 6. Mit LM Studio: Copy-Paste Flow + +**Workflow:** + +``` +1. VS Code öffnen: translations/glossary_en.txt +2. LM Studio öffnen: http://localhost:1234 +3. Wort-für-Wort: + + VS Code: + Eingang = [KOPIEREN: "Eingang"] + + LM Studio Chat: + "Übersetze ins Englische: Eingang" + → Antwortet: "Inbox" + + VS Code: + Eingang = Inbox [EINFÜGEN: "Inbox"] + + ... nächstes Wort +``` + +**Pro Sprache 30-45 Minuten** + +--- + +## 7. Mehrsprachig (Englisch, Französisch, Spanisch, etc.) + +``` +translations/ +├─ glossary_de.txt (Master - deine Deutsch-Strings) +├─ glossary_en.txt (Englisch - deine Copy-Paste Übersetzungen) +├─ glossary_fr.txt (Französisch) +├─ glossary_es.txt (Spanisch) +├─ glossary_pt.txt (Portugiesisch) +└─ glossary_it.txt (Italienisch) +``` + +**Script für alle Sprachen:** + +```bash +#!/bin/bash +# scripts/update_all_translations.sh + +LANGUAGES=("en" "fr" "es" "pt" "it") + +for LANG in "${LANGUAGES[@]}"; do + echo "🌍 Update $LANG..." + + python3 scripts/update_translations_from_txt.py \ + --txt translations/glossary_${LANG}.txt \ + --source translations/mail-adler_de.ts \ + --output translations/mail-adler_${LANG}.ts + + lrelease translations/mail-adler_${LANG}.ts +done + +echo "✅ Alle Sprachen aktualisiert!" +``` + +--- + +## 8. Excel-Workflow (noch schneller) + +Wenn du lieber in Excel arbeiten möchtest: + +**translations/glossary_all.csv** +```csv +Deutsch,English,Français,Español,Português,Italiano +Eingang,Inbox,Boîte de réception,Bandeja de entrada,Caixa de entrada,Posta in arrivo +Gesendet,Sent,Envoyés,Enviados,Enviados,Inviati +Entwürfe,Drafts,Brouillons,Borradores,Rascunhos,Bozze +Papierkorb,Trash,Corbeille,Papelera,Lixo,Cestino +... +``` + +**Excel-Script:** + +```python +#!/usr/bin/env python3 +# scripts/update_from_excel.py + +import pandas as pd +import xml.etree.ElementTree as ET +import argparse + +def excel_to_ts(excel_file: str, language: str, ts_source: str, ts_output: str): + """ + Lese Excel/CSV und schreibe eine bestimmte Sprach-Spalte in .ts + """ + + # Lese Excel + df = pd.read_csv(excel_file) + + # Extrahiere Sprach-Spalte + translations = dict(zip(df['Deutsch'], df[language])) + + # Update .ts (wie oben) + tree = ET.parse(ts_source) + root = tree.getroot() + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + updated = 0 + for message in root.findall('.//message', ns): + source_elem = message.find('source', ns) + trans_elem = message.find('translation', ns) + + if source_elem is not None and trans_elem is not None: + deutsch_text = source_elem.text + if deutsch_text in translations: + trans_elem.text = str(translations[deutsch_text]) + trans_elem.set('type', 'finished') + updated += 1 + + tree.write(ts_output, encoding='UTF-8', xml_declaration=True) + print(f"✅ {language}: {updated} Strings aktualisiert") + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--excel', required=True) + parser.add_argument('--language', required=True, help='English, Français, Español, etc.') + parser.add_argument('--source', required=True) + parser.add_argument('--output', required=True) + + args = parser.parse_args() + excel_to_ts(args.excel, args.language, args.source, args.output) +``` + +**Nutzung:** +```bash +# Alle Sprachen aus einer Excel-Datei +python3 scripts/update_from_excel.py --excel translations/glossary_all.csv --language English --source translations/mail-adler_de.ts --output translations/mail-adler_en.ts +python3 scripts/update_from_excel.py --excel translations/glossary_all.csv --language Français --source translations/mail-adler_de.ts --output translations/mail-adler_fr.ts +python3 scripts/update_from_excel.py --excel translations/glossary_all.csv --language Español --source translations/mail-adler_de.ts --output translations/mail-adler_es.ts +``` + +--- + +## 9. Zusammenfassung: Einfache Optionen + +### Schnellste Variante: TXT-Datei + +``` +1. Öffne Notepad +2. Bearbeite: translations/glossary_en.txt + Eingang = Inbox + Gesendet = Sent + ... +3. Script: python3 scripts/update_translations_from_txt.py ... +4. Fertig! +``` + +### Professionellste Variante: Excel/CSV + +``` +1. Öffne Excel +2. Alle Sprachen in einer Datei + Deutsch | English | Français | Español + Eingang | Inbox | Boîte... | Bandeja... +3. Script: python3 scripts/update_from_excel.py ... +4. Fertig! +``` + +### Beide Varianten = Keine .ts-Bearbeitung nötig! + +**Du arbeitest nur mit:** +- ✅ Notepad/Word/Excel +- ✅ LM Studio (Chat) +- ✅ Python-Script (einmal klicken) + +**Nicht mit:** +- ❌ .ts XML-Dateien +- ❌ Komplexe Formate +- ❌ Manuelle .ts-Bearbeitung diff --git a/EMAIL_UEBERSETZUNG_FEATURE.md b/EMAIL_UEBERSETZUNG_FEATURE.md new file mode 100644 index 0000000..7e8efe9 --- /dev/null +++ b/EMAIL_UEBERSETZUNG_FEATURE.md @@ -0,0 +1,654 @@ +# Email-Übersetzungs-Feature (Phase C) + +## 1. Ollama besser ansteuern (weniger kreativ) + +### Problem: +``` +>>> übersetze ins englische: Eingang +Mistral antwortet: "Ihr Schreiben enthält eine Mischung..." +❌ Zu viel Text! +``` + +### Lösung: Strikter Prompt + +```bash +ollama run mistral:7b + +# Vor jeder Frage eingeben (einmalig): +>>> Du bist ein Übersetzer. +>>> Antworte NUR mit dem Übersetzungs-Wort. +>>> KEINE Erklärung. +>>> EINE Zeile. + +# Dann: +>>> Englisch: Eingang +Inbox + +>>> Englisch: Synchronisieren +Synchronize +``` + +**Oder: Simpler Prompt in Python:** + +```python +prompt = """Du bist Übersetzer. Antworte NUR mit dem Wort. +Englisch: Eingang""" + +# Mistral antwortet: "Inbox" +``` + +--- + +## 2. Email-Übersetzung als Feature (Phase C) + +### Architektur + +```cpp +// src/translation/EmailTranslator.h/cpp +class EmailTranslator { +public: + // On-Demand Übersetzung + QString translateEmail( + const MailMessage &email, + const QString &targetLanguage // "Deutsch", "Französisch", etc. + ); + + // Speichere Übersetzung in DB + void cacheTranslation( + const QString &emailId, + const QString &language, + const QString &translatedText + ); + + // Prüfe ob schon übersetzt + QString getCachedTranslation( + const QString &emailId, + const QString &language + ); + + // Zeichenlimit prüfen + int getRemainingCharacters(const QString &service); // "deepl" +}; +``` + +### UI: Übersetzungs-Button + +``` +Email angezeigt: +┌──────────────────────────────────┐ +│ Von: alice@gmail.com │ +│ Betreff: Bonjour │ +├──────────────────────────────────┤ +│ Original: │ +│ Bonjour, comment allez-vous? │ +│ │ +│ [🌍 Übersetzen zu Deutsch] │ ← Button +│ │ +│ Übersetzung (gecacht): │ +│ Hallo, wie geht es dir? │ +└──────────────────────────────────┘ +``` + +--- + +## 3. Character-Budgeting für DeepL + +### DeepL Free: 12.500 Zeichen/Monat + +**Umrechnung:** + +``` +Durchschnittliche Email: +- Header (Von, An, Betreff): ~100 Zeichen +- Body: 500-2000 Zeichen +- Total: ~600 Zeichen pro Email + +12.500 Zeichen / 600 = ~20 Emails/Monat kostenlos + +ODER: +Wenn du viele Emails übersetzt: +12.500 / 30 Tage = 416 Zeichen/Tag += ~1 lange Email pro Tag kostenlos +``` + +### Character-Tracking implementieren + +```python +#!/usr/bin/env python3 +# src/translation/deepl_budget.py + +import json +from datetime import datetime, timedelta +from pathlib import Path + +class DeepLBudget: + def __init__(self, api_key: str): + self.api_key = api_key + self.budget_file = "~/.config/mail-adler/deepl_budget.json" + self.monthly_limit = 12500 + self.budget = self.load_budget() + + def load_budget(self): + """Lade Budget-Tracking""" + if Path(self.budget_file).exists(): + with open(self.budget_file, 'r') as f: + return json.load(f) + + return { + "month": datetime.now().strftime("%Y-%m"), + "used": 0, + "remaining": 12500, + "history": [] + } + + def save_budget(self): + """Speichere Budget""" + with open(self.budget_file, 'w') as f: + json.dump(self.budget, f, indent=2) + + def translate_email(self, email_text: str, target_lang: str) -> dict: + """Übersetze mit Budgetprüfung""" + + # Prüfe Limit + estimated_chars = len(email_text) + 100 # +100 für API-Overhead + + if estimated_chars > self.budget["remaining"]: + return { + "success": False, + "error": f"Budget überschritten! Nur {self.budget['remaining']} Zeichen übrig.", + "remaining": self.budget["remaining"], + "limit": self.monthly_limit + } + + # Übersetze + import deepl + translator = deepl.Translator(self.api_key) + + result = translator.translate_text(email_text, target_lang=target_lang) + + # Update Budget + self.budget["used"] += len(email_text) + self.budget["remaining"] = self.monthly_limit - self.budget["used"] + self.budget["history"].append({ + "timestamp": datetime.now().isoformat(), + "language": target_lang, + "characters": len(email_text) + }) + self.save_budget() + + return { + "success": True, + "translation": result.text, + "used": self.budget["used"], + "remaining": self.budget["remaining"] + } + + def reset_if_new_month(self): + """Reset Budget am 1. des Monats""" + current_month = datetime.now().strftime("%Y-%m") + + if self.budget["month"] != current_month: + self.budget["month"] = current_month + self.budget["used"] = 0 + self.budget["remaining"] = self.monthly_limit + self.budget["history"] = [] + self.save_budget() + +if __name__ == '__main__': + budget = DeepLBudget("your-api-key") + + # Check Budget + print(f"Genutzet: {budget.budget['used']} Zeichen") + print(f"Übrig: {budget.budget['remaining']} Zeichen") + + # Übersetze + result = budget.translate_email( + "Bonjour, comment allez-vous?", + "DE" + ) + + print(result) +``` + +### In C++: + +```cpp +// src/translation/DeepLBudget.h/cpp +class DeepLBudget { +private: + int monthly_limit = 12500; + int used = 0; + QString budget_file; + +public: + bool canTranslate(int estimated_chars) { + return (used + estimated_chars) <= monthly_limit; + } + + int getRemainingCharacters() { + return monthly_limit - used; + } + + void updateUsage(int chars) { + used += chars; + saveBudget(); + } + + void resetIfNewMonth() { + // Check Datum, reset wenn neuer Monat + } +}; +``` + +--- + +## 4. Übersetzungs-Caching (nie doppelt übersetzen) + +### Strategie: Lokale Datenbank + +```sql +CREATE TABLE email_translations ( + id INTEGER PRIMARY KEY, + email_id TEXT UNIQUE, + source_language TEXT, + target_language TEXT, + original_text TEXT, + translated_text TEXT, + timestamp DATETIME, + character_count INTEGER +); + +-- Beispiel: +INSERT INTO email_translations VALUES ( + 1, + "gmail_abc123", + "Französisch", + "Deutsch", + "Bonjour, comment allez-vous?", + "Hallo, wie geht es dir?", + "2025-02-03 14:30:00", + 35 +); +``` + +### In C++: + +```cpp +// src/translation/TranslationCache.h/cpp +class TranslationCache { +private: + Database *m_db; + +public: + // Cache prüfen + QString getCachedTranslation( + const QString &emailId, + const QString &language + ) { + // SELECT translated_text WHERE email_id = ? + // RETURN cached version + } + + // Cachen speichern + void cacheTranslation( + const QString &emailId, + const QString &language, + const QString &translatedText, + int characterCount + ) { + // INSERT INTO email_translations + } + + // Statistik + int getTotalCharactersTranslated() { + // SELECT SUM(character_count) + } +}; + +// Nutzung: +EmailTranslator translator; +TranslationCache cache; + +// 1. Check Cache +QString cached = cache.getCachedTranslation("email123", "Deutsch"); +if (!cached.isEmpty()) { + // Zeige cached Übersetzung + ui->translationLabel->setText(cached); + return; // Keine API-Anfrage nötig! +} + +// 2. Neu übersetzen +QString translated = translator.translateEmail(email, "Deutsch"); + +// 3. Cache speichern +cache.cacheTranslation("email123", "Deutsch", translated, translated.length()); +``` + +--- + +## 5. On-Demand Übersetzung (Klick-Button oder Shortcut) + +### Workflow: + +``` +Email öffnen: +┌──────────────────────────────────┐ +│ Von: alice@gmail.com │ +│ Betreff: Bonjour │ +├──────────────────────────────────┤ +│ Bonjour, comment allez-vous? │ +│ Je suis heureux de vous écrire. │ +│ │ +│ [🌍 Zu Deutsch übersetzen] │ ← Click hier +│ [Zu Englisch übersetzen] │ +│ [Zu Spanisch übersetzen] │ +│ │ +│ ⟳ (Übersetzung läuft...) │ ← Loading +│ │ +│ Deutsch: │ +│ Hallo, wie geht es dir? │ ← Übersetzung angezeigt +│ Ich freue mich, dir zu schreiben.│ +│ │ +│ [× Übersetzung ausblenden] │ +└──────────────────────────────────┘ +``` + +### Keyboard Shortcut: + +``` +Strg + Shift + T → Übersetzungs-Dialog öffnen + (wähle Zielsprache) + +Oder: +Strg + Shift + 1 → Übersetze zu Deutsch +Strg + Shift + 2 → Übersetze zu Englisch +Strg + Shift + 3 → Übersetze zu Französisch +... etc. +``` + +### C++ Implementation: + +```cpp +// In MailViewWidget +void MailViewWidget::setupTranslationShortcuts() { + // Ctrl+Shift+T → Dialog + new QShortcut( + Qt::CTRL + Qt::SHIFT + Qt::Key_T, + this, + SLOT(on_translateEmail_triggered()) + ); + + // Ctrl+Shift+D → Deutsch + new QShortcut( + Qt::CTRL + Qt::SHIFT + Qt::Key_D, + this, + [this]() { translateEmailTo("Deutsch"); } + ); +} + +void MailViewWidget::translateEmailTo(const QString &language) { + if (!m_currentEmail) return; + + // Check Cache + QString cached = TranslationCache::instance() + .getCachedTranslation(m_currentEmail->id(), language); + + if (!cached.isEmpty()) { + // Sofort zeigen (aus Cache) + showTranslation(cached); + return; + } + + // Übersetzung starten + ui->translationLabel->setText("⟳ Übersetzung läuft..."); + + // Async Translation (nicht blockieren!) + QtConcurrent::run([this, language]() { + EmailTranslator translator; + + QString translated = translator.translateEmail( + m_currentEmail->body(), + language + ); + + // Cache speichern + TranslationCache::instance().cacheTranslation( + m_currentEmail->id(), + language, + translated, + translated.length() + ); + + // UI Update + QMetaObject::invokeMethod(this, [this, translated]() { + showTranslation(translated); + }); + }); +} + +void MailViewWidget::showTranslation(const QString &translatedText) { + ui->translationLabel->setText(translatedText); + ui->hideTranslationButton->setVisible(true); +} +``` + +--- + +## 6. Performance & Geschwindigkeit + +### Wie lange dauert Übersetzung? + +``` +DeepL API (online): +- Netzwerk-Latenz: 200-500ms +- API-Verarbeitung: 500-1000ms +- Total: ~1-1.5 Sekunden + +Ollama lokal: +- Directe Verarbeitung: 2-5 Sekunden +- Keine Netzwerk-Verzögerung +- Total: ~2-5 Sekunden + +Caching (aus DB): +- Datenbank-Abfrage: 10-50ms +- Total: ~0.05 Sekunden (sofort!) +``` + +### Optimierung: Async Translation + +```cpp +// NICHT blockieren! +void translateEmail() { + // ❌ FALSCH: + QString translation = translator.translateEmail(text); + // UI friert für 1-5 Sekunden ein! + + // ✅ RICHTIG: + QtConcurrent::run([this]() { + QString translation = translator.translateEmail(text); + + // Async callback + QMetaObject::invokeMethod(this, [this, translation]() { + ui->translationLabel->setText(translation); + }); + }); + // UI bleibt responsive! +} +``` + +--- + +## 7. Grammatik & Rechtschreibung (C++) + +### LanguageTool Integration + +```cpp +// src/translation/GrammarChecker.h/cpp +class GrammarChecker { +private: + QString m_language; + +public: + struct GrammarIssue { + int start; + int length; + QString message; + QStringList suggestions; + }; + + QVector checkGrammar(const QString &text) { + // LanguageTool REST API aufrufen + // http://localhost:8081/v2/check + + QJsonObject params; + params["text"] = text; + params["language"] = m_language; + + // Sende Anfrage + QNetworkAccessManager manager; + QNetworkRequest request(QUrl("http://localhost:8081/v2/check")); + + QNetworkReply *reply = manager.post(request, + QJsonDocument(params).toJson()); + + // Parse Antwort + // ... + } + + // Visuelle Markierung + void highlightErrors(QTextEdit *editor, + const QVector &issues) { + + for (const auto &issue : issues) { + // Markiere fehlerhafte Stellen mit rot welligen Linien + QTextCursor cursor(editor->document()); + cursor.setPosition(issue.start); + cursor.setPosition(issue.start + issue.length, + QTextCursor::KeepAnchor); + + QTextCharFormat fmt; + fmt.setUnderlineStyle(QTextCharFormat::WaveUnderline); + fmt.setUnderlineColor(Qt::red); + cursor.setCharFormat(fmt); + } + } +}; + +// Nutzung beim Schreiben: +void ComposeDialog::checkGrammarWhileTyping() { + GrammarChecker checker; + auto issues = checker.checkGrammar(ui->textEdit->toPlainText()); + checker.highlightErrors(ui->textEdit, issues); +} +``` + +--- + +## 8. Original unverändert, nur Anzeige übersetzen + +### Strategie: Zwei Text-Widgets + +```cpp +class MailViewWidget { +private: + QTextEdit *m_originalText; // Originale Email (readonly) + QTextEdit *m_translatedText; // Übersetzung (readonly) + QTabWidget *m_textTabs; + +public: + void setupTranslationUI() { + m_textTabs = new QTabWidget(); + + // Tab 1: Original + m_originalText = new QTextEdit(); + m_originalText->setReadOnly(true); + m_textTabs->addTab(m_originalText, "Original"); + + // Tab 2: Übersetzung + m_translatedText = new QTextEdit(); + m_translatedText->setReadOnly(true); + m_textTabs->addTab(m_translatedText, "Deutsch"); + + // Layout + auto layout = new QVBoxLayout(); + layout->addWidget(m_textTabs); + setLayout(layout); + } + + void displayEmail(const MailMessage &email) { + // Originale Email + m_originalText->setPlainText(email.body()); + + // Übersetze (async) + QtConcurrent::run([this, email]() { + QString translated = translator.translateEmail( + email.body(), + "Deutsch" + ); + + QMetaObject::invokeMethod(this, [this, translated]() { + m_translatedText->setPlainText(translated); + }); + }); + } +}; +``` + +**Resultat:** +``` +┌─────────────────────────────┐ +│ [Original] [Deutsch] [...] │ ← Tabs +├─────────────────────────────┤ +│ Bonjour, comment allez-vous?│ ← Original unverändert +│ Je suis heureux... │ +│ │ +│ (Click "Deutsch" Tab) │ +│ │ +│ Hallo, wie geht es dir? │ ← Übersetzung +│ Ich freue mich... │ +└─────────────────────────────┘ +``` + +--- + +## 9. Zusammenfassung: Praktische Email-Übersetzung + +### Features (Phase C): + +✅ **On-Demand Übersetzung** +- Button: "Zu Deutsch übersetzen" +- Shortcut: Ctrl+Shift+D + +✅ **Caching (nie doppelt übersetzen)** +- SQLite Database +- Erste Übersetzung: 1-2 Sekunden +- Cache-Hit: 0.05 Sekunden + +✅ **Budget-Tracking** +- DeepL: 12.500 Zeichen/Monat +- Warnung wenn Limit nah +- Statistik: X Zeichen genutzt, Y übrig + +✅ **Original + Übersetzung** +- Tabs: Original | Deutsch | Englisch | ... +- Original unverändert +- Benutzer sieht beide + +✅ **Grammatik-Prüfung** +- LanguageTool (kostenlos) +- Fehler rot unterstrichen +- Vorschläge bei Hover + +✅ **Async (nicht blockieren)** +- UI bleibt responsive +- Loading-Indikator + +### Kosten: +- DeepL Free: 12.500 Zeichen/Monat kostenlos +- LanguageTool: Kostenlos +- **TOTAL: €0** + +### Performance: +- Erste Übersetzung: 1-2 Sekunden +- Cache-Hit: Sofort (0.05s) +- Ohne Blockierung: UI responsive diff --git a/ERWEITERTE_FEATURES.md b/ERWEITERTE_FEATURES.md new file mode 100644 index 0000000..6f3b608 --- /dev/null +++ b/ERWEITERTE_FEATURES.md @@ -0,0 +1,585 @@ +# Mail-Adler Erweiterte Features + +## 1. Datenbank: SQLite vs. MariaDB + +### Analyse für ~3000 Mails + +| Kriterium | SQLite | MariaDB | +|-----------|--------|---------| +| **Größe** | 1 Datei | Server-basiert | +| **3000 Mails Größe** | ~500MB-1GB | ~100-200MB | +| **Backup** | ✅ Einfach (Datei kopieren) | ⚠️ MySQL-Dumps nötig | +| **Verschlüsselung** | ⚠️ SQLCipher (extra) | ✅ TLS ready | +| **Aufbewahrungsfristen** | ✅ Einfach (SQL Trigger) | ✅ Einfach (SQL Trigger) | +| **Performance** | ✅ Gut für lokal | ⚠️ Remote-Latenz | +| **Installation** | ✅ Qt-built-in | ⚠️ Server setup | +| **Deployment** | ✅ Mit App | ❌ Extern | + +### EMPFEHLUNG: **SQLite + SQLCipher** (Phase B) +- Lokal = privat + schnell +- Einfaches Backup (Datei) +- Encryption eingebaut +- Keine Server-Abhängigkeit + +**MariaDB später (Phase E+)** wenn Multi-User/Sync nötig + +--- + +## 2. Gesetzliche Aufbewahrungsfristen + Auto-Löschung + +### Implementierung + +```python +# src/storage/retention_policy.py + +class RetentionPolicy: + def __init__(self): + self.policies = { + # Deutschland/EU (DSGVO) + "GDPR": { + "email": 7 * 365, # 7 Jahre (falls geschäftsrelevant) + "attachment": 7 * 365, + "deleted_email": 30, # Gelöschte 30 Tage + "spam": 30, # Spam 30 Tage + }, + # Schweiz (StG) + "CHE": { + "email": 7 * 365, + "attachment": 7 * 365, + "deleted_email": 30, + "spam": 30, + }, + # USA (verschiedene Staaten) + "USA": { + "email": 5 * 365, # 5 Jahre + "attachment": 5 * 365, + "deleted_email": 30, + "spam": 30, + }, + } + + def schedule_auto_delete(self): + """ + Daily Job: Lösche alte Emails/Anhänge + """ + scheduler.add_job( + self.delete_old_emails, + 'cron', + hour=3, # 03:00 nachts + minute=0 + ) + + def delete_old_emails(self): + """ + Lösche Emails älter als retention_days + Speichere vorher Hash zum Audit + """ + region = Settings.retentionRegion() # GDPR, CHE, USA + policy = self.policies[region] + + # Email löschen + cutoff_date = datetime.now() - timedelta(days=policy["email"]) + old_emails = db.query( + "SELECT id, subject, date FROM emails WHERE date < ? AND folder != 'trash'", + cutoff_date + ) + + for email in old_emails: + # Audit Log speichern (bevor löschen) + audit_log.record({ + "email_id": email["id"], + "subject": email["subject"], + "deleted_at": datetime.now(), + "reason": "retention_policy_auto_delete" + }) + + # Anhänge löschen + db.delete_attachments(email["id"]) + + # Email löschen + db.delete_email(email["id"]) + + log.info(f"Deleted {len(old_emails)} old emails") + + # Spam löschen (schneller) + spam_cutoff = datetime.now() - timedelta(days=policy["spam"]) + db.delete_emails(f"folder = 'spam' AND date < ?", spam_cutoff) +``` + +### UI: Aufbewahrungsrichtlinie einstellen + +``` +Einstellungen → Datenschutz + +Aufbewahrungsrichtlinie: +├─ Land/Region: [GDPR - Deutschland/EU] ▼ +│ └─ Emails: 7 Jahre +│ └─ Gelöschte: 30 Tage +│ └─ Spam: 30 Tage +│ +├─ Auto-Löschung: +│ ☑ Aktiviert (täglich 03:00) +│ ☑ Audit-Log speichern +│ +└─ Info: "Vollständige Compliance mit DSGVO" +``` + +--- + +## 3. Anhänge: Lazy-Load (Nur bei Anklick herunterladen) + +### Architektur + +```cpp +// src/attachment/AttachmentManager.h/cpp +class AttachmentManager { +private: + struct AttachmentMetadata { + QString id; + QString filename; + QString mime_type; + int size; // Bytes + bool downloaded; // false = noch nicht heruntergeladen + QString local_path; // "" wenn nicht downloaded + }; + +public: + // Zeige Anhang-Preview (nur Metadaten) + QVector getAttachmentsMetadata(QString emailId) { + // Keine Daten herunterladen, nur Info: + // Größe, Name, Typ anzeigen + } + + // Download on Click + void downloadAttachment(QString attachmentId) { + // Erst wenn User klickt: + // 1. Download vom Server + // 2. In ~/.local/share/mail-adler/attachments/cache/ + // 3. Beim Anklick öffnen + } + + // Auto-Cleanup (nach Öffnen) + void autoCleanupOldAttachments() { + // Nach 7 Tagen gelöschte Attachments aus Cache löschen + // Originale bleiben im Email-Archive + } +}; +``` + +### UI: Anhang-Anzeige + +``` +Email von alice@gmx.de + +Subject: Dokumente für Projekt + +Anhänge (3): +├─ 📄 Vertrag.pdf (2.3 MB) [⬇️ Download] [🔗 Öffnen] +├─ 📊 Budget.xlsx (1.2 MB) [⬇️ Download] [🔗 Öffnen] +└─ 🖼️ Logo.png (845 KB) [⬇️ Download] [🔗 Öffnen] + +(Nur Name + Größe angezeigt, Download erst auf Klick) +``` + +--- + +## 4. UI: Ungelesene-Zähler + Navigation + +### Ordner-Panel mit Zähler + +``` +📧 Eingang (23) ← 23 ungelesene +├─ 📂 Arbeit (8) +├─ 📂 Privat (5) +├─ 📂 Spam (10) +└─ 🗑️ Papierkorb (2) + +[Gesendet] +[Entwürfe] +[Archiv] +``` + +### Click auf "(23)" → Erste ungelesen + +```cpp +// src/ui/FolderPanel.h/cpp +void FolderPanel::onUnreadCountClicked(QString folder) { + // 1. Hole erste ungelesene Email + Email firstUnread = db.query( + "SELECT * FROM emails WHERE folder = ? AND unread = 1 ORDER BY date DESC LIMIT 1", + folder + ); + + // 2. Springe zu dieser Email + emit navigateToEmail(firstUnread.id); + + // 3. Markiere als gelesen + email.markAsRead(); + + // 4. (Optional) Nächste ungelesen + // Wenn User Taste drückt (z.B. 'n' für next unread) +} + +void MailListView::onKeyPressed(Qt::Key key) { + if (key == Qt::Key_N) { // 'n' = next unread + Email next = getNextUnreadInFolder(); + if (next.id()) { + navigateToEmail(next.id); + next.markAsRead(); + } + } +} +``` + +### Tastatur-Shortcuts für Ungelesene + +``` +n → Nächste ungelesen +p → Vorherige ungelesen +u → Markiere als ungelesen +f → Markiere als gelesen + +Beispiel: +User klickt auf (23) → Erste ungelesen wird angezeigt +User drückt 'n' → Nächste ungelesen +User drückt 'n' → Nächste ungelesen +... etc +``` + +--- + +## 5. Ungelesene-Handling: Spam & Blockierte + +### Spam-Check + +```python +# src/email/UnreadHandler.py +class UnreadHandler: + def categorizeUnread(self, email): + """ + Prüfe: Ist ungelesene Email in Spam? + Ist ungelesene Email blockiert? + """ + + # 1. Spam-Check + if email.folder == "spam": + return { + "unread": True, + "spam": True, + "blocked": False, + "action": "Nicht zählen in normalem Ungelesen" + } + + # 2. Blockiert-Check + sender = email.from_address + if db.isBlocked(sender): + return { + "unread": True, + "spam": False, + "blocked": True, + "action": "Nicht zählen in normalem Ungelesen" + } + + # 3. Normal + return { + "unread": True, + "spam": False, + "blocked": False, + "action": "Zähle in (23)" + } +``` + +### UI: Separate Zähler + +``` +📧 Eingang (23 normal) [🚫 5 blocked] [🚫 8 spam] + └─ 23 = nur legitim ungelesen + └─ 5 = blockierte Absender + └─ 8 = Spam + +Wenn User auf (23) klickt: + → Erste legitim ungelesen + +Wenn User auf [🚫 5] klickt: + → Erste blockierte (aber nicht vorschalten) +``` + +--- + +## 6. Serienbriefe: Massenmails mit Vorlagen + +### Implementierung + +```cpp +// src/mail/MailMerge.h/cpp +class MailMerge { +public: + struct Template { + QString id; + QString name; + QString subject; // Mit {{var}} Platzhaltern + QString body; // Mit {{var}} Platzhaltern + QStringList variables; // ["name", "email", "company"] + }; + + void createSeriesEmail(Template tmpl, QVector> data) { + """ + Erstelle Massen-Email aus Vorlage + Daten + + data = [ + {"name": "Alice", "email": "alice@...", "company": "ABC Ltd"}, + {"name": "Bob", "email": "bob@...", "company": "XYZ Corp"}, + ] + + Beispiel Vorlage: + Subject: Hallo {{name}}! + Body: Lieber {{name}}, + {{company}} hat sich für unsere Services interessiert... + """ + + for (auto &row : data) { + // 1. Ersetze {{var}} durch Wert + QString subject = tmpl.subject; + QString body = tmpl.body; + + for (auto &[var, value] : row) { + subject.replace("{{" + var + "}}", value); + body.replace("{{" + var + "}}", value); + } + + // 2. Erstelle Email + Email email; + email.to = row["email"]; + email.subject = subject; + email.body = body; + email.delayed = true; // Verzögerter Versand + + // 3. Speichern + m_pendingEmails.push_back(email); + } + } +}; +``` + +### UI: Serienbriefe Dialog + +``` +┌──────────────────────────────────┐ +│ Serienbriefe │ +├──────────────────────────────────┤ +│ Vorlage: [Kundenangebot] ▼ │ +│ │ +│ Empfänger-Liste (CSV): │ +│ [Durchsuchen...] │ +│ ✓ header row (name, email, co) │ +│ │ +│ Preview: │ +│ ┌────────────────────────────────┐ +│ │Subject: Hallo Alice! │ +│ │ │ +│ │Lieber Alice, ABC Ltd hat... │ +│ └────────────────────────────────┘ +│ │ +│ Versand: │ +│ ☑ Verzögerter Versand │ +│ └─ Nach Email: [1] Minute │ +│ │ +│ [Preview] [Senden] [Abbrechen] │ +└──────────────────────────────────┘ +``` + +--- + +## 7. Verzögertes Versenden (Scheduled Send) + +### Implementierung + +```cpp +// src/mail/DelayedSend.h/cpp +class DelayedSend { +public: + struct ScheduledEmail { + QString id; + QString to; + QString subject; + QString body; + QDateTime sendAt; // Wann versenden + QString status; // "scheduled", "sending", "sent", "cancelled" + }; + + void scheduleEmail(Email email, QDateTime sendAt) { + """ + Plane Email-Versand für später + """ + ScheduledEmail scheduled; + scheduled.id = generateId(); + scheduled.to = email.to; + scheduled.subject = email.subject; + scheduled.body = email.body; + scheduled.sendAt = sendAt; + scheduled.status = "scheduled"; + + db.insert("scheduled_emails", scheduled); + + // Zeige Timer in Entwürfe + emit scheduledEmailCreated(scheduled); + } + + void checkAndSendScheduled() { + """ + Alle 1 Minute prüfen: Welche Emails sind reif zum Versenden? + """ + auto now = QDateTime::currentDateTime(); + + auto ready = db.query( + "SELECT * FROM scheduled_emails WHERE sendAt <= ? AND status = 'scheduled'", + now + ); + + for (auto &email : ready) { + sendEmail(email); + db.update("scheduled_emails", email.id, {"status": "sent"}); + } + } +}; +``` + +### UI: Entwürfe mit Timer + +``` +Entwürfe (3) + +[📝 Kundenangebot für Alice] +├─ Status: Versand geplant +├─ Versend um: 2025-02-05 14:30 +├─ Countdown: 2h 15min +└─ [❌ Abbrechen] [✏️ Bearbeiten] + +[📝 Besprechungsnotizen] +├─ Status: Normal (nicht geplant) + +[📝 Test Email] +├─ Status: Fehler beim Versand +├─ Fehler: "SMTP Error 550" +└─ [🔄 Erneut versuchen] [Löschen] + +Versand abbrechen: +┌──────────────────────────┐ +│ Email wird versendet in: │ +│ │ +│ ⏱ [████░░░░░░░░░] 30s │ +│ │ +│ [❌ Jetzt abbrechen] │ +│ [▶️ Weiter mit 'E'] │ +└──────────────────────────┘ +``` + +--- + +## 8. AD/Microsoft Integration (Phase D+) + +### LDAP + Outlook Sync + +```python +# src/integration/MicrosoftAD.py + +class MicrosoftADIntegration: + def __init__(self): + self.ldap_server = "ldap://ad.company.com" + self.graph_api = "https://graph.microsoft.com/v1.0" + + def syncContacts(self): + """ + Hole Kontakte aus AD LDAP + """ + conn = ldap.initialize(self.ldap_server) + results = conn.search_s( + "OU=Users,DC=company,DC=com", + ldap.SCOPE_SUBTREE, + "(objectClass=person)", + ['mail', 'displayName', 'telephoneNumber'] + ) + + # Speichere in lokale Kontakt-Datenbank + for dn, attrs in results: + contact = { + "name": attrs['displayName'][0], + "email": attrs['mail'][0], + "phone": attrs.get('telephoneNumber', [''])[0], + "source": "AD" + } + db.save_contact(contact) + + def syncCalendar(self, user_email): + """ + Hole Outlook-Kalender über MS Graph API + """ + # Benötigt OAuth2 Token + headers = {"Authorization": f"Bearer {self.get_token()}"} + + response = requests.get( + f"{self.graph_api}/me/events", + headers=headers + ) + + for event in response.json()['value']: + cal_event = { + "title": event['subject'], + "start": event['start']['dateTime'], + "end": event['end']['dateTime'], + "organizer": event['organizer']['emailAddress']['address'], + "source": "outlook" + } + db.save_calendar_event(cal_event) + + def showADAvailability(self, email): + """ + Zeige AD-User Verfügbarkeit im Kalender + """ + # Prüfe: Ist User frei/busy? + # Zeige in Kalender-UI +``` + +### UI: AD-Integration + +``` +Kontakte + +Quelle: [Alle] [Lokal] [AD] [Outlook] + +Alice Schmidt (AD) +├─ Email: alice@company.de +├─ Phone: +49-30-12345678 +├─ Verfügbar: 10:30-11:30 (aus Outlook) +└─ [Termin vereinbaren] + +Bob Müller (AD) +├─ Email: bob@company.de +├─ Verfügbar: Ganztag frei +└─ [Termin vereinbaren] +``` + +--- + +## 9. Zusammenfassung: Erweiterte Features + +| Feature | Phase | Priorität | Komplexität | +|---------|-------|-----------|-------------| +| SQLite → MariaDB | E+ | Niedrig | Hoch | +| Aufbewahrungsfristen | B+ | Hoch | Mittel | +| Lazy-Load Anhänge | B+ | Hoch | Mittel | +| Ungelesene-Zähler | B+ | Hoch | Niedrig | +| Serienbriefe | C | Mittel | Hoch | +| Verzögerter Versand | C | Mittel | Mittel | +| AD/Outlook Integration | D+ | Niedrig | Hoch | + +### MVP (Must-Have Phase B+): +1. ✅ SQLite mit SQLCipher +2. ✅ Aufbewahrungsfristen (Auto-Löschung) +3. ✅ Lazy-Load Anhänge +4. ✅ Ungelesene-Zähler + Navigation + +### Nice-to-Have (Phase C+): +5. ⏳ Serienbriefe +6. ⏳ Verzögerter Versand +7. ⏳ AD Integration diff --git a/FINAL_ROADMAP.md b/FINAL_ROADMAP.md new file mode 100644 index 0000000..109cb1a --- /dev/null +++ b/FINAL_ROADMAP.md @@ -0,0 +1,389 @@ +# Mail-Adler Final Roadmap + +## Phase B - Mail-Core (AKTUELL) + +### B1: IMAP/SMTP Grundlagen +- ✅ Englisch Strings manuell +- ✅ DeepL für andere Sprachen (CSV) +- ✅ Import & Compile automatisch +- ✅ GMX, Web.de, Telekom Support + +### B2: Sicherheit & Datenschutz +- ✅ PSK-basierte E2EE Gruppen +- ✅ Cloud-Anhänge (verschlüsselt) +- ✅ Spam-Liste (dezentralisiert) +- ✅ Telemetrie optional + +--- + +## Phase C - Email-Features + Kalender + +### C1: Email-Übersetzung (ON-DEMAND ONLY) + +**Strategie:** +```cpp +// Nur wenn User klickt! +void MailViewWidget::on_translateButton_clicked() { + // 1. Check Cache (0.05s) + QString cached = cache.get(emailId, "Deutsch"); + if (!cached.isEmpty()) { + showTranslation(cached); + return; // SOFORT + } + + // 2. DeepL API (1-2s) + QtConcurrent::run([this]() { + QString translated = deepl.translate( + m_email.body(), + "DE" + ); + + // Cache speichern + cache.save(m_email.id(), "Deutsch", translated); + + // UI Update + showTranslation(translated); + }); + + // UI zeigt: "⟳ Übersetzung läuft..." + // Bleibt responsive +} +``` + +**Kosten:** +- DeepL Free: 12.500 Zeichen/Monat +- Nur wenn User klickt = minimale Nutzung +- Cache spart 95% der API-Calls + +**OLLAMA RAUSNEHMEN** ✅ +- Zu langsam (2-5s) +- Lokal = mehr Ressourcen +- DeepL ist besser + schneller + +--- + +### C2: iCal-Kalender (GMX) + +**Feature-Set:** + +``` +📅 KALENDER-VIEWS +├─ Monat (Standard) +├─ Woche (4 Wochen nebeneinander) +├─ Tag (Stunden-Übersicht) +└─ Agenda (Liste kommender Termine) + +✏️ BEARBEITUNG +├─ Neuer Termin: [+ Neuer Termin] Button +├─ Termin bearbeiten: Doppel-Click +├─ Termin löschen: Right-Click → Löschen +├─ Automatisches Speichern zu GMX (iCal PUSH) +└─ Konflikt-Detection (Überschneidungen warnen) + +🔍 TERMINFINDUNG (Meeting Scheduler) +├─ "Mit wem?" → E-Mail Adressen eingeben +├─ Laden: Verfügbarkeit von allen prüfen +├─ Zeige: Gemeinsame freie Slots +├─ Auto-Buchen: Erste freie Zeit → Termin erstellen +├─ Sende: Einladungen an alle +└─ Synchronisiere: Mit allen GMX-Kalendern +``` + +### iCal-Integration (RFC 5545) + +```cpp +// src/calendar/CalendarManager.h/cpp +class CalendarManager { +private: + QString m_gmxCalendarPath; // iCal File Path + Database *m_db; // Local cache + +public: + // iCal Datei laden + bool loadFromGMX(const QString &imapPath); + + // Event hinzufügen + void addEvent(const CalendarEvent &event); + + // Event bearbeiten + void updateEvent(const QString &eventId, const CalendarEvent &event); + + // Event löschen + void deleteEvent(const QString &eventId); + + // Zu GMX speichern (IMAP APPEND) + bool syncToGMX(); + + // Termine in Bereich + QVector getEventsInRange(QDate start, QDate end); +}; + +struct CalendarEvent { + QString id; // UID + QString title; + QString description; + QDateTime start; + QDateTime end; + QString location; + QStringList attendees; // Email-Adressen + bool allDay; + QStringList alarms; // Vor 15min, 1h, 1d, etc. +}; +``` + +### Terminfindung-Algorithmus + +```cpp +// src/calendar/MeetingScheduler.h/cpp +class MeetingScheduler { +public: + struct FreeSlot { + QDateTime start; + QDateTime end; + int numberOfParticipantsAvailable; // Alle verfügbar? + }; + + // Finde gemeinsame freie Zeiten + QVector findFreeSlots( + const QStringList &emailAddresses, // ["alice@gmx.de", "bob@web.de", "charlie@gmail.com"] + QDate start, + QDate end, + int durationMinutes = 60 + ) { + // 1. Lade Kalender von allen + QMap> allCalendars; + for (const auto &email : emailAddresses) { + allCalendars[email] = loadCalendarFromIMAP(email); + } + + // 2. Finde Überschneidungen (freie Zeit wenn ALL verfügbar) + QVector freeSlots; + + for (QDate date = start; date <= end; date = date.addDays(1)) { + for (int hour = 8; hour <= 18; hour++) { + QDateTime slotStart(date, QTime(hour, 0)); + QDateTime slotEnd = slotStart.addSecs(durationMinutes * 60); + + bool allFree = true; + for (const auto &email : emailAddresses) { + if (hasConflict(allCalendars[email], slotStart, slotEnd)) { + allFree = false; + break; + } + } + + if (allFree) { + freeSlots.push_back({slotStart, slotEnd, emailAddresses.size()}); + } + } + } + + return freeSlots; + } + + // Buche erste freie Zeit automatisch + void autoBookFirstAvailable( + const QStringList &emailAddresses, + const QString &title, + const QString &description + ) { + auto slots = findFreeSlots(emailAddresses, QDate::currentDate(), QDate::currentDate().addDays(30), 60); + + if (!slots.isEmpty()) { + // Buche ersten Slot + auto firstSlot = slots.first(); + + CalendarEvent event; + event.title = title; + event.description = description; + event.start = firstSlot.start; + event.end = firstSlot.end; + event.attendees = emailAddresses; + + // 1. Erstelle Event + calendar.addEvent(event); + calendar.syncToGMX(); + + // 2. Sende Einladungen + for (const auto &email : emailAddresses) { + sendMeetingInvitation(email, event); + } + } + } +}; +``` + +### UI: Terminfindung Dialog + +``` +┌────────────────────────────────────┐ +│ Terminfindung │ +├────────────────────────────────────┤ +│ │ +│ Mit wem? │ +│ [alice@gmx.de] [Entfernen] │ +│ [bob@web.de] [Entfernen] │ +│ [charlie@gmail.com] [Entfernen] │ +│ [+ Weitere Person] │ +│ │ +│ Dauer: [60 Minuten] │ +│ Suchbereich: [1 Woche] ab [heute] │ +│ │ +│ [Verfügbarkeiten laden...] │ +│ (Laden: Kalender von 3 Personen) │ +│ │ +│ Freie Termine: │ +│ ☑ Morgen 10:00-11:00 (Alle frei) │ +│ [Buchen] │ +│ ☑ Morgen 14:00-15:00 (Alle frei) │ +│ [Buchen] │ +│ ☑ Übermorgen 09:00-10:00 (Alle) │ +│ [Buchen] │ +│ │ +│ [Automatisch buchen] [Abbrechen] │ +└────────────────────────────────────┘ +``` + +--- + +## Phase D - Google + Erweit. + +### D1: Google (später - zu kompliziert jetzt) +``` +Problem: 2-Factor Authentication kompliziert +Lösung: Phase D (wenn Zeit) + +Features später: +- Google Calendar (iCal Export) +- Google Drive (Cloud-Attachment Integration) +- Gmail (über Google OAuth2) + +Kosten: Kostenlos (aber kompliziert) +``` + +### D2: Weitere Features +- OpenPGP/PGP Integration +- S/MIME Zertifikate +- IMAP IDLE (Push-Notifications) +- Advanced Search +- Rules/Filters + +--- + +## Implementation Roadmap + +### Phase B Timeline (Nächste 2-3 Wochen) + +``` +Woche 1: +├─ IMAP Sync (GMX, Web.de) +├─ SMTP Send +├─ Database Schema +└─ Settings + +Woche 2: +├─ Multi-Folder Support +├─ Spam-Liste Integration +├─ DeepL String-Übersetzung +└─ Testings (GMX/Web.de/Telekom) + +Woche 3: +├─ Polish & Bugs +├─ Release v0.1.0 +└─ Vorbereitung Phase C +``` + +### Phase C Timeline (3-4 Wochen danach) + +``` +Woche 1: +├─ iCal Parser +├─ Kalender-UI (Monat-View) +└─ IMAP iCal Support + +Woche 2: +├─ Woche/Tag-Ansicht +├─ Bearbeitungs-Dialog +└─ Zu GMX speichern + +Woche 3: +├─ Terminfindung-Algorithmus +├─ Meeting Scheduler UI +└─ Auto-Booking + +Woche 4: +├─ Email-Übersetzung (On-Demand DeepL) +├─ Cache-System +└─ Testing +``` + +--- + +## Summary: Deine Anforderungen + +### ✅ Email-Übersetzung +- **Nur On-Demand** (User klickt Button) +- **Ollama raus** (zu langsam) +- **DeepL nur wenn nötig** (Kosten minimal) +- **Cache** (niemals doppelt übersetzen) +- **Performance:** Cache-Hit 0.05s, DeepL 1-2s + +### ✅ iCal-Kalender (GMX) +- **RFC 5545 Standard** (iCal) +- **Monat/Woche/Tag View** +- **Bearbeitung + Speicherung** (IMAP) +- **Terminfindung:** + - Eingabe: 3+ Email-Adressen + - Laden: Verfügbarkeit prüfen + - Zeigen: Freie Slots + - Auto-Book: Erste freie Zeit buchen + - Einladungen senden + +### ✅ Google später (Phase D) +- Zu kompliziert jetzt (2FA) +- Nach Mail-Core stabil ist + +--- + +## Kosten & Performance + +``` +Phase B (Mail-Core): +├─ DeepL: €0 (12.5K chars/Monat kostenlos) +├─ LanguageTool: €0 +└─ Hosting: 1GB RAM, CPU niedrig + +Phase C (Kalender): +├─ iCal: €0 (Standard Protocol) +├─ GMX IMAP: €0 (kostenlos) +└─ Hosting: +500MB RAM für Calendar DB + +Phase D (Google): +├─ Google OAuth: €0 (aber kompliziert) +└─ Später entscheiden +``` + +--- + +## Nächste Konkrete Schritte + +``` +1. ✅ Phase B Strings übersetzen + → DeepL CSV System verwenden + +2. ✅ Phase B kompilieren & testen + → GMX/Web.de/Telekom + +3. ✅ Phase C Kalender entwickeln + → iCal Parser + → UI (Monat View) + → Terminfindung + +4. ⏳ Phase C Email-Übersetzung + → DeepL On-Demand + → Cache System + +5. ⏳ Phase D Google (später) +``` + +**Fertig dokumentiert!** 🎯 diff --git a/INTERNATIONALISIERUNG.md b/INTERNATIONALISIERUNG.md new file mode 100644 index 0000000..d693f1e --- /dev/null +++ b/INTERNATIONALISIERUNG.md @@ -0,0 +1,644 @@ +# Mail-Adler Internationalisierung (i18n) - Deutsch-First Strategie + +## 1. Design-Prinzip: Deutsch als Master-Language + +### 1.1 Warum Deutsch-First? + +**Problem mit Englisch-First:** +```cpp +// ❌ FALSCH: Englisch im Code +const char *text = tr("Inbox"); // Später zu "Eingang" übersetzt +// Problem: UI-Layouts nicht optimal für Deutsch +// Deutsche Wörter sind meist länger → Layout-Probleme +``` + +**Richtig: Deutsch im Code** +```cpp +// ✅ RICHTIG: Deutsch zuerst +const char *text = tr("Eingang"); // Master ist Deutsch +// Automatisch zu "Inbox" übersetzt für Englisch +// UI optimiert für längere deutsche Wörter von Anfang an +``` + +### 1.2 Vorteile + +| Aspekt | Englisch-First | Deutsch-First | +|--------|---|---| +| **UI-Layout** | ❌ Zu kurz | ✅ Optimal | +| **Übersetzungsqualität** | ⚠️ KI macht Fehler | ✅ Deutsche Muttersprachler | +| **Kontext** | ❌ Verloren | ✅ Im Code klar | +| **Performance** | ❌ Übersetzungs-Overhead | ✅ Native Sprache | +| **Wartbarkeit** | ❌ Verwirrend | ✅ Klar | +| **Marktposition** | ❌ Generisch | ✅ "Für Deutsche" | + +--- + +## 2. Code-Architektur: Deutsch-Only Source Code + +### 2.1 Alle String-Konstanten in Deutsch + +```cpp +// src/ui/MainWindow.h +class MainWindow : public QMainWindow { +private: + // ✅ Deutsch in Source Code + QString m_title = "Mail-Adler"; + QString m_statusReady = "Bereit"; + QString m_statusSyncing = "Synchronisiere..."; + QString m_errorConnection = "Verbindungsfehler"; +}; + +// src/models/MailFolder.h +enum StandardFolder { + FOLDER_INBOX = "Eingang", // Nicht "Inbox" + FOLDER_SENT = "Gesendet", // Nicht "Sent" + FOLDER_DRAFTS = "Entwürfe", // Nicht "Drafts" + FOLDER_TRASH = "Papierkorb", // Nicht "Trash" + FOLDER_SPAM = "Spam", // Nicht "Junk" + FOLDER_ARCHIVE = "Archiv" // Nicht "Archive" +}; + +// src/localization/Strings.h +namespace Strings { + constexpr auto MENU_FILE = "Datei"; + constexpr auto MENU_EDIT = "Bearbeiten"; + constexpr auto MENU_VIEW = "Ansicht"; + constexpr auto MENU_TOOLS = "Werkzeuge"; + constexpr auto MENU_HELP = "Hilfe"; + + constexpr auto ACTION_NEW = "Neu"; + constexpr auto ACTION_OPEN = "Öffnen"; + constexpr auto ACTION_SAVE = "Speichern"; + constexpr auto ACTION_EXIT = "Beenden"; + + constexpr auto BUTTON_OK = "OK"; + constexpr auto BUTTON_CANCEL = "Abbrechen"; + constexpr auto BUTTON_APPLY = "Anwenden"; + constexpr auto BUTTON_CLOSE = "Schließen"; +}; +``` + +### 2.2 UI-Dateien (Qt Designer) in Deutsch + +```xml + + + + MainWindow + + + Mail-Adler + + + + + + + + Datei + + + + + + + + + + + + Neu + + + Ctrl+N + + + +``` + +### 2.3 CMakeLists.txt - Deutsch als Standard-Sprache + +```cmake +# CMakeLists.txt + +# Qt Internationalization +set(CMAKE_AUTORCC ON) + +# Standard-Sprache: Deutsch +set(QT_TRANSLATIONS_DEFAULT_LANGUAGE "de_DE") + +# Alle .ts Dateien (Translation Source) basierend auf Deutsch +set(TS_FILES + translations/mail-adler_de.ts # Master (Deutsch) + translations/mail-adler_en.ts # English + translations/mail-adler_fr.ts # Français + translations/mail-adler_es.ts # Español + translations/mail-adler_it.ts # Italiano +) + +# Nur eine master .ts datei (Deutsch) +qt_add_translations(mailadler_app + TS_FILES ${TS_FILES} + RESOURCE_PREFIX "/translations" +) +``` + +--- + +## 3. i18n System: Dynamische Übersetzungen + +### 3.1 Ressourcen-basiertes System (nicht hardcoded) + +```cpp +// src/localization/LocalizationManager.h +class LocalizationManager : public QObject { + Q_OBJECT + +public: + static LocalizationManager& instance(); + + void setLanguage(const QString &langCode); // "de_DE", "en_US", "fr_FR" + QString tr(const QString &germanText); // Übersetze Deutsch → aktuelle Sprache + + bool loadTranslations(const QString &langCode); + +private: + QTranslator *m_translator = nullptr; + QString m_currentLanguage = "de_DE"; +}; + +// Beispiel: +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + // Standard: Deutsch + LocalizationManager::instance().setLanguage("de_DE"); + + // Falls System-Sprache Englisch → English laden + QString systemLang = QLocale::system().language(); + if (systemLang == "en") { + LocalizationManager::instance().setLanguage("en_US"); + } + + MainWindow window; + window.show(); + return app.exec(); +} +``` + +### 3.2 Verwendung im Code + +```cpp +// src/ui/MainWindow.cpp +#include "localization/LocalizationManager.h" + +MainWindow::MainWindow() { + auto &i18n = LocalizationManager::instance(); + + // ✅ Einfach - übersetzen wenn nötig + ui->menuDatei->setTitle(i18n.tr("Datei")); + ui->menuBearbeiten->setTitle(i18n.tr("Bearbeiten")); + ui->menuAnsicht->setTitle(i18n.tr("Ansicht")); + + // Mit Pluralisierung + int messageCount = 5; + QString text = i18n.tr("%1 ungelesene Nachricht(en)").arg(messageCount); + // DE: "5 ungelesene Nachrichten" + // EN: "5 unread messages" + // FR: "5 messages non lus" +} +``` + +### 3.3 Translation Source File (mail-adler_de.ts) + +```xml + + + + + MainWindow + + + Datei + + + + + Bearbeiten + + + + +``` + +--- + +## 4. Übersetzungs-Management mit KI + +### 4.1 Automatische Übersetzung (mit GPT) + +**Workflow:** + +```bash +# 1. Deutsch Source Code → Extrahiere alle Strings +lupdate -no-obsolete src/ -ts translations/mail-adler_de.ts +# Erzeugt: translations/mail-adler_de.ts (Master) + +# 2. Übersetze zu allen anderen Sprachen (mit KI) +./scripts/translate_with_ai.py \ + --source translations/mail-adler_de.ts \ + --target en_US,fr_FR,es_ES,it_IT \ + --ai-engine gpt-4 \ + --output translations/ +# Erzeugt: +# translations/mail-adler_en.ts +# translations/mail-adler_fr.ts +# translations/mail-adler_es.ts +# translations/mail-adler_it.ts + +# 3. Kompiliere Übersetzungen +lrelease translations/mail-adler_*.ts +# Erzeugt: translations/mail-adler_de.qm, mail-adler_en.qm, etc. +``` + +### 4.2 Python-Script für KI-Übersetzungen + +```python +# scripts/translate_with_ai.py +#!/usr/bin/env python3 + +import openai +import xml.etree.ElementTree as ET +from pathlib import Path + +class AITranslator: + def __init__(self, api_key): + openai.api_key = api_key + self.cache = {} + + def translate(self, text: str, target_lang: str) -> str: + """Übersetze Text von Deutsch zu Zielsprache mit GPT""" + cache_key = f"{text}::{target_lang}" + + if cache_key in self.cache: + return self.cache[cache_key] + + lang_names = { + 'en_US': 'English', + 'fr_FR': 'French', + 'es_ES': 'Spanish', + 'it_IT': 'Italian' + } + + prompt = f""" +Übersetze folgendes Deutsch in {lang_names[target_lang]}. +Nur das Übersetzungs-Ergebnis ausgeben, keine Erklärung. +Behalte Formatierung und Sonderzeichen. + +Deutsch: {text} +{lang_names[target_lang]}: +""" + + response = openai.ChatCompletion.create( + model="gpt-4", + messages=[{"role": "user", "content": prompt}], + temperature=0.3 # Niedrig für Konsistenz + ) + + translation = response['choices'][0]['message']['content'].strip() + self.cache[cache_key] = translation + return translation + + def translate_ts_file(self, source_ts: str, target_lang: str) -> str: + """Übersetze komplette .ts Datei""" + tree = ET.parse(source_ts) + root = tree.getroot() + + for message in root.findall('.//message'): + source_elem = message.find('source') + translation_elem = message.find('translation') + + if source_elem is not None and translation_elem is not None: + source_text = source_elem.text + translated = self.translate(source_text, target_lang) + translation_elem.text = translated + translation_elem.set('type', 'finished') + + return ET.tostring(root, encoding='unicode') + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument('--source', required=True) + parser.add_argument('--target', required=True) + parser.add_argument('--output', required=True) + + args = parser.parse_args() + + translator = AITranslator(api_key='your-api-key') + + for lang in args.target.split(','): + print(f"Übersetze zu {lang}...") + translated_xml = translator.translate_ts_file(args.source, lang.strip()) + + output_path = f"{args.output}/mail-adler_{lang.split('_')[0]}.ts" + Path(output_path).write_text(translated_xml) + print(f"Gespeichert: {output_path}") +``` + +### 4.3 Qualitätskontrolle vor Release + +```bash +# 1. Übersetzte Strings prüfen +./scripts/validate_translations.py translations/*.ts + +# 2. Context-Mismatch prüfen +./scripts/check_context_consistency.py translations/mail-adler_*.ts + +# 3. Längste Strings pro Sprache prüfen (UI-Layout) +./scripts/check_string_lengths.py translations/mail-adler_*.ts +``` + +--- + +## 5. Sprachen-Fallback & Lokalisierung + +### 5.1 Fallback-Kette + +```cpp +// src/localization/LocalizationManager.cpp +void LocalizationManager::setLanguage(const QString &langCode) { + QLocale locale(langCode); + + // Fallback-Kette: + // 1. Gewünschte Sprache (z.B. de_AT → de) + // 2. Basis-Sprache (z.B. de_AT → de_DE) + // 3. Englisch (fallback) + // 4. Deutsch (Master) + + QStringList fallbackList; + fallbackList << langCode; // de_AT + fallbackList << langCode.split("_").first(); // de + fallbackList << "en_US"; // English + fallbackList << "de_DE"; // Deutsch (Master) + + for (const QString &lang : fallbackList) { + if (m_translator->load(lang, ":/translations")) { + QCoreApplication::installTranslator(m_translator); + m_currentLanguage = lang; + emit languageChanged(lang); + return; + } + } +} +``` + +### 5.2 Lokale Format-Strings + +```cpp +// src/localization/LocaleFormatting.h +class LocaleFormatting { +public: + // Deutsche Datumsformate + static QString formatDate_de(const QDateTime &dt) { + return dt.toString("d. MMMM yyyy"); // "3. Februar 2025" + } + + static QString formatTime_de(const QDateTime &dt) { + return dt.toString("HH:mm Uhr"); // "14:30 Uhr" + } + + static QString formatDateTime_de(const QDateTime &dt) { + return formatDate_de(dt) + ", " + formatTime_de(dt); + } + + // Englische Formate + static QString formatDate_en(const QDateTime &dt) { + return dt.toString("MMMM d, yyyy"); // "February 3, 2025" + } + + // Französische Formate + static QString formatDate_fr(const QDateTime &dt) { + return dt.toString("d MMMM yyyy"); // "3 février 2025" + } +}; + +// Verwendung: +QString formatted = LocaleFormatting::formatDate_de(QDateTime::currentDateTime()); +``` + +### 5.3 Pluralisierung + +```cpp +// src/localization/Pluralization.h +class Pluralization { +public: + static QString unreadMessages(int count) { + auto &i18n = LocalizationManager::instance(); + + if (count == 0) { + return i18n.tr("Keine ungelesenen Nachrichten"); + } else if (count == 1) { + return i18n.tr("1 ungelesene Nachricht"); + } else { + return i18n.tr("%1 ungelesene Nachrichten").arg(count); + } + } +}; + +// Automatische Pluralisierung mit Qt: +QString text = tr("nplurals=2; plural=(n != 1);") // German rule + + i18n.tr("%n ungelesene Nachricht(en)", "", count); +// DE: "5 ungelesene Nachrichten" +// EN: "5 unread messages" +``` + +--- + +## 6. Sprachen-Support nach Priorität + +### Phase B (Aktuell) +- ✅ **Deutsch** (Master Language) + - 100% von Anfang an + - Native Muttersprachler + - Vollständig getestet + +### Phase C (April 2025) +- ⏳ **Englisch** (English) + - KI-übersetzen (GPT-4) + - Review vor Release + - ~200 Strings + +### Phase D (Mai 2025) +- ⏳ **Französisch** (Français) +- ⏳ **Italienisch** (Italiano) +- ⏳ **Spanisch** (Español) + +### Phase E (Juni 2025) +- ⏳ **Niederländisch** (Nederlands) +- ⏳ **Polnisch** (Polski) +- ⏳ **Schwedisch** (Svenska) + +### Nicht geplant +- ❌ Chinesisch, Japanisch, Arabisch (Zu komplex, andere Zeichensätze) +- ❌ Russisch (Politische Gründe für deutsches Projekt) + +--- + +## 7. Workflow für Neue Strings + +### 7.1 Entwickler hinzufügt neuen String + +```cpp +// src/ui/AccountSetupDialog.cpp +void AccountSetupDialog::setupUI() { + auto label = new QLabel(tr("E-Mail Adresse:")); // ← Deutsch! + // Nicht: tr("Email Address:") +} +``` + +### 7.2 Automatische Extraktion + +```bash +# Täglich (via Git Hook): +lupdate src/ forms/ -ts translations/mail-adler_de.ts + +# .git/hooks/pre-commit +#!/bin/bash +cd "$(git rev-parse --show-toplevel)" +lupdate src/ forms/ -ts translations/mail-adler_de.ts +git add translations/mail-adler_de.ts +``` + +### 7.3 Neue Strings markieren + +In `mail-adler_de.ts`: +```xml + + + E-Mail Adresse: + + +``` + +### 7.4 Vor Release: Review & Übersetzen + +```bash +# Git-Hook vor Release: +./scripts/review_untranslated.py translations/mail-adler_de.ts +# → Zeigt: 3 übersetzte, 0 unübersetzt +# Falls unübersetzt: Release blockiert! + +# Dann KI-Übersetzung: +./scripts/translate_with_ai.py \ + --source translations/mail-adler_de.ts \ + --target en_US,fr_FR \ + --output translations/ +``` + +--- + +## 8. Vorteile dieses Ansatzes + +| Vorteil | Erklärung | +|---------|-----------| +| **Natürliche UI** | Deutsche Wörter → längere Strings → Layout optimiert | +| **Bessere Übersetzung** | KI arbeitet von Deutsch → andere Sprachen (natives Deutsch als Kontext) | +| **Einfache Maintenance** | Ein Source-of-Truth (Deutsch), keine verwirrenden Englisch-Kommentare | +| **KI-Freundlich** | GPT übersetzt besser von Deutsch als von technischem Englisch | +| **Markt-Vorteil** | "Für Deutsche gemacht" ist erkennbar und authentisch | +| **Performance** | Master-Language = Runtime-Language (kein Übersetzungs-Overhead) | +| **Branding** | Mail-Adler ist "Deutsch-zentriert", nicht "Globales Englisch-Projekt" | + +--- + +## 9. Ressourcen-Dateien Structure + +``` +translations/ +├─ mail-adler_de.ts (Master - von Entwickler gepflegt) +├─ mail-adler_de.qm (Compiled - verwendet zur Laufzeit) +├─ mail-adler_en.ts (English - von KI generiert) +├─ mail-adler_en.qm (Compiled) +├─ mail-adler_fr.ts (Français - von KI generiert) +├─ mail-adler_fr.qm (Compiled) +└─ translations.qrc (Qt Resource File) + +translations.qrc: + + + + mail-adler_de.qm + mail-adler_en.qm + mail-adler_fr.qm + + +``` + +--- + +## 10. GitHub Workflow für Übersetzungen + +```yaml +# .github/workflows/translations.yml +name: Translations + +on: + push: + paths: + - 'src/**' + - 'forms/**' + +jobs: + update-translations: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Update master (German) strings + run: | + lupdate src/ forms/ -ts translations/mail-adler_de.ts + + - name: Auto-translate to other languages (GPT-4) + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + run: | + ./scripts/translate_with_ai.py \ + --source translations/mail-adler_de.ts \ + --target en_US,fr_FR,es_ES,it_IT \ + --output translations/ + + - name: Compile translations + run: | + lrelease translations/mail-adler_*.ts + + - name: Commit and push + run: | + git config --local user.email "action@github.com" + git config --local user.name "Translation Bot" + git add translations/ + git commit -m "Auto-update translations from master (German)" + git push +``` + +--- + +## 11. Fazit: "Deutsch-First" ist die Zukunft + +**Klassisches Englisch-First Projekt:** +``` +Englisch Code → Deutsche Übersetzung → UI passt nicht → Fixxen +``` + +**Mail-Adler Deutsch-First:** +``` +Deutsch Code → UI perfekt → KI übersetzt → Fertig +``` + +**Mail-Adler wird sich als "deutsches Projekt" schneller durchsetzen** weil: +1. ✅ Native Qualität von Anfang an +2. ✅ Deutsche Nutzer fühlen sich verstanden +3. ✅ Keine verloren gehen Übersetzungs-Kontext +4. ✅ KI produziert bessere Qualität mit natürlichem Deutsch als Input +5. ✅ Markenpositionierung klar: "Open Source für Deutsche" diff --git a/LM_STUDIO_WORKFLOW.md b/LM_STUDIO_WORKFLOW.md new file mode 100644 index 0000000..becbb4a --- /dev/null +++ b/LM_STUDIO_WORKFLOW.md @@ -0,0 +1,644 @@ +# LM Studio Workflow - Deutsch-First Übersetzung + +## 1. Warum Semi-Manuell besser ist + +### Problem: Batch-Übersetzung +``` +Deutsch: "Markiert als Spam" +Englisch von KI: "Marked as spam" ❌ Sollte "Mark as Spam" sein + +Jetzt muss man suchen: "War das 'Mark as Spam' oder 'Marked as spam'?" +``` + +### Lösung: Wort-für-Wort mit Kontext +``` +Deutsche Strings → Export mit Kontext +↓ +Du kopierst reihum in LM Studio +↓ +LM Studio gibt einzelne Übersetzung (sicher!) +↓ +Du kopierst zurück +↓ +Import → fertig + +Vorteil: Du siehst GENAU welches Wort, Kontext ist klar +``` + +--- + +## 2. LM Studio Setup + +### 2.1 Installation & Modell + +**LM Studio Download:** https://lmstudio.ai + +``` +1. Download & Install (.exe) +2. Starten +3. Modelle suchen: "Mistral 7B" oder "Neural Chat" +4. Download (4-5 GB) +5. "Local Server" Tab → Start (Port 1234) + +Server läuft auf: http://localhost:1234 +``` + +### 2.2 LM Studio einrichten (einmalig) + +``` +LM Studio GUI: +1. Model: "Mistral 7B" wählen +2. Temperature: 0.2 (niedrig = konsistent) +3. Max Tokens: 200 +4. Local Server → Start + +Im Chat dann können Sie testen: +"Übersetze 'Eingang' ins Englische" +Antwort: "Inbox" +``` + +--- + +## 3. Export-Tool: Begriffe mit Kontext + +### 3.1 Python-Script zum Exportieren + +```python +#!/usr/bin/env python3 +# scripts/export_for_translation.py + +import xml.etree.ElementTree as ET +import json +import argparse +from pathlib import Path +from datetime import datetime + +class TranslationExporter: + def __init__(self, ts_file: str): + self.ts_file = ts_file + self.tree = ET.parse(ts_file) + self.root = self.tree.getroot() + self.ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + def export_for_manual_translation(self, target_lang: str, output_file: str): + """ + Exportiere alle untranslatierten Strings mit Kontext + Format: Einfaches Text-Format für LM Studio + """ + + lang_names = { + 'en': 'English', + 'fr': 'French', + 'es': 'Spanish', + 'pt': 'Portuguese', + 'it': 'Italian', + 'nl': 'Dutch', + 'pl': 'Polish' + } + + lang_name = lang_names.get(target_lang, target_lang) + + # Header + output = [] + output.append(f"{'='*70}") + output.append(f"Mail-Adler Translation Export") + output.append(f"Quellsprache: Deutsch") + output.append(f"Zielsprache: {lang_name}") + output.append(f"Exportdatum: {datetime.now().strftime('%d.%m.%Y %H:%M')}") + output.append(f"{'='*70}") + output.append("") + + # Glossar (konstante Begriffe) + output.append("GLOSSAR (Diese Wörter IMMER so übersetzen):") + output.append("-" * 70) + glossar = { + 'de': ['Eingang', 'Gesendet', 'Entwürfe', 'Papierkorb', 'Spam', 'Archiv', 'Markiert'], + 'en': ['Inbox', 'Sent', 'Drafts', 'Trash', 'Spam', 'Archive', 'Flagged'], + 'fr': ['Boîte de réception', 'Envoyés', 'Brouillons', 'Corbeille', 'Spam', 'Archive', 'Marqués'], + 'es': ['Bandeja de entrada', 'Enviados', 'Borradores', 'Papelera', 'Spam', 'Archivo', 'Marcado'], + } + + if target_lang in glossar: + for de_word, trans_word in zip(glossar['de'], glossar[target_lang]): + output.append(f" • {de_word:20} → {trans_word}") + output.append("") + output.append("") + + # Alle Strings + string_count = 0 + for context in self.root.findall('.//context', self.ns): + context_name = context.find('.//name', self.ns) + context_text = context_name.text if context_name is not None else "Unknown" + + output.append(f"[CONTEXT: {context_text}]") + output.append("=" * 70) + + for message in context.findall('.//message', self.ns): + source_elem = message.find('source', self.ns) + location_elem = message.find('location', self.ns) + translation_elem = message.find('translation', self.ns) + + if source_elem is None: + continue + + source_text = source_elem.text + + # Überspringe bereits fertig übersetzte + if translation_elem is not None and translation_elem.text and translation_elem.get('type') != 'unfinished': + continue + + string_count += 1 + + # Kontext (Datei + Zeilennummer) + location_text = "" + if location_elem is not None: + filename = location_elem.get('filename', '') + line = location_elem.get('line', '') + location_text = f" ({filename}:{line})" + + output.append(f"") + output.append(f"[STRING #{string_count}]") + output.append(f"Deutsch: {source_text}") + output.append(f"Zielsprache ({lang_name}):") + output.append(f"Kontext: {location_text}") + output.append("---") + output.append("") + + # Speichern + with open(output_file, 'w', encoding='utf-8') as f: + f.write('\n'.join(output)) + + print(f"✅ Export fertig!") + print(f" Datei: {output_file}") + print(f" Strings: {string_count}") + print(f"") + print(f"Workflow:") + print(f"1. Öffne {output_file}") + print(f"2. Kopiere 'Deutsch: [text]'") + print(f"3. Gebe in LM Studio ein: 'Übersetze ins {lang_name}: [text]'") + print(f"4. Kopiere Ergebnis → ersetze '[STRING #X]' Zeile") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Export für manuelle Übersetzung') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--target', required=True, help='en, fr, es, pt, it, nl, pl') + parser.add_argument('--output', required=True, help='Ausgabedatei') + + args = parser.parse_args() + + exporter = TranslationExporter(args.source) + exporter.export_for_manual_translation(args.target, args.output) +``` + +### 3.2 Export erstellen + +```bash +# Export für Englisch +python3 scripts/export_for_translation.py \ + --source translations/mail-adler_de.ts \ + --target en \ + --output export_en_manual.txt + +# Export für Französisch +python3 scripts/export_for_translation.py \ + --source translations/mail-adler_de.ts \ + --target fr \ + --output export_fr_manual.txt +``` + +**Output-Beispiel (export_en_manual.txt):** + +``` +====================================================================== +Mail-Adler Translation Export +Quellsprache: Deutsch +Zielsprache: English +Exportdatum: 03.02.2025 14:30 +====================================================================== + +GLOSSAR (Diese Wörter IMMER so übersetzen): +---------------------------------------------------------------------- + • Eingang → Inbox + • Gesendet → Sent + • Entwürfe → Drafts + • Papierkorb → Trash + • Spam → Spam + • Archiv → Archive + • Markiert → Flagged + + +[CONTEXT: MainWindow] +====================================================================== + +[STRING #1] +Deutsch: Datei +Zielsprache (English): +Kontext: (src/ui/mainwindow.cpp:123) +--- + +[STRING #2] +Deutsch: Bearbeiten +Zielsprache (English): +Kontext: (src/ui/mainwindow.cpp:124) +--- + +[STRING #3] +Deutsch: Ansicht +Zielsprache (English): +Kontext: (src/ui/mainwindow.cpp:125) +--- +``` + +--- + +## 4. LM Studio Prompt-Template + +### 4.1 Einfacher Workflow im Chat + +**In LM Studio Chat eingeben:** + +``` +Kontext: Du übersetzt für die Mail-Anwendung "Mail-Adler" + +GLOSSAR: +- Eingang = Inbox +- Gesendet = Sent +- Entwürfe = Drafts +- Papierkorb = Trash +- Spam = Spam +- Archiv = Archive +- Markiert = Flagged + +Übersetze folgendes Deutsches Wort/Phrase ins Englische: +[DEUTSCHES WORT HIER] + +Antwort (nur das übersetzte Wort, keine Erklärung): +``` + +### 4.2 Copy-Paste Workflow + +**Schritt 1: Export öffnen** +``` +export_en_manual.txt öffnen (mit Notepad/VS Code) +``` + +**Schritt 2: LM Studio öffnen** +``` +http://localhost:1234 +Chat öffnen +``` + +**Schritt 3: Wort-für-Wort übersetzen** + +``` +export_en_manual.txt: +[STRING #1] +Deutsch: Datei + +↓ (kopiere "Datei") + +LM Studio Chat: +[Gib Kontext & Glossar ein (einmalig)] +Übersetze ins Englische: Datei + +LM Studio antwortet: +File + +↓ (kopiere "File") + +export_en_manual.txt (aktualisiere): +[STRING #1] +Deutsch: Datei +Englisch: File ← EINGEBEN + +↓ (zum nächsten Wort) +``` + +### 4.3 Vordefiniertes Prompt-Template (Copy-Paste) + +Einfach diesen Text in LM Studio eingeben (einmalig), dann nur noch Wörter austauschen: + +``` +🔧 LM Studio System Prompt (einmalig einrichten): + +Kontext: Du bist Übersetzer für die Mail-Anwendung "Mail-Adler" (ein Open-Source E-Mail-Client für Deutsch sprechende Nutzer). + +GLOSSAR (Diese Wörter IMMER exakt so übersetzen, auch wenn anders üblich): +- Eingang = Inbox (nicht "Postfach") +- Gesendet = Sent +- Entwürfe = Drafts (nicht "Konzepte") +- Papierkorb = Trash (nicht "Müllkorb") +- Spam = Spam +- Archiv = Archive +- Markiert = Flagged (nicht "Gekennzeichnet") +- Synchronisieren = Synchronize (oder "Sync") +- Verschlüsseln = Encrypt +- Entschlüsseln = Decrypt +- Konto = Account (nicht "Benutzerkonto") +- Anmeldedaten = Credentials + +ANWEISUNG: +- Übersetze NUR das Wort/die Phrase +- KEINE Erklärung +- KEINE Sätze +- Halte Formatierung (z.B. Umlaute) +- Fachbegriffe korrekt +- Sei konsistent (nutze immer die gleiche Übersetzung) + +Format für jede Übersetzung: +Übersetze ins [SPRACHE]: [DEUTSCHES WORT] +Antwort: [ÜBERSETZTES WORT] +``` + +--- + +## 5. Import-Tool: Zurück in .ts Datei + +### 5.1 Script zum Importieren + +```python +#!/usr/bin/env python3 +# scripts/import_translated_strings.py + +import xml.etree.ElementTree as ET +import argparse +import re +from pathlib import Path + +class TranslationImporter: + def __init__(self, ts_file: str): + self.ts_file = ts_file + self.tree = ET.parse(ts_file) + self.root = self.tree.getroot() + self.ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + def import_from_export(self, export_file: str, output_ts: str): + """ + Importiere übersetzte Strings aus export_*.txt + Format: + [STRING #X] + Deutsch: [original] + Englisch: [translation] + """ + + # Parse export file + translations = {} + + with open(export_file, 'r', encoding='utf-8') as f: + content = f.read() + + # Regex zum Extrahieren: STRING #X ... Deutsch: ... Zielsprache: ... + pattern = r'\[STRING #(\d+)\]\s*Deutsch:\s*([^\n]+)\s*(?:Englisch|Französisch|Spanisch|Portugiesisch|Italienisch|Niederländisch|Polnisch):\s*([^\n]+)' + + for match in re.finditer(pattern, content): + deutsch = match.group(2).strip() + translation = match.group(3).strip() + + translations[deutsch] = translation + print(f"✓ {deutsch:30} → {translation}") + + # Update .ts Datei + updated_count = 0 + for context in self.root.findall('.//context', self.ns): + for message in context.findall('.//message', self.ns): + source_elem = message.find('source', self.ns) + translation_elem = message.find('translation', self.ns) + + if source_elem is None or translation_elem is None: + continue + + source_text = source_elem.text + + if source_text in translations: + translation_elem.text = translations[source_text] + translation_elem.set('type', 'finished') + updated_count += 1 + + # Speichern + self.tree.write(output_ts, encoding='UTF-8', xml_declaration=True) + + print(f"\n✅ Import fertig!") + print(f" Aktualisierte Strings: {updated_count}") + print(f" Datei: {output_ts}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Import übersetzte Strings') + parser.add_argument('--source', required=True, help='mail-adler_de.ts') + parser.add_argument('--import', dest='import_file', required=True, help='export_*.txt') + parser.add_argument('--output', required=True, help='mail-adler_en.ts') + + args = parser.parse_args() + + importer = TranslationImporter(args.source) + importer.import_from_export(args.import_file, args.output) +``` + +### 5.2 Import durchführen + +```bash +# Nach du alle Wörter übersetzt hast: +python3 scripts/import_translated_strings.py \ + --source translations/mail-adler_de.ts \ + --import export_en_manual.txt \ + --output translations/mail-adler_en.ts + +# Output: +✓ Datei → File +✓ Bearbeiten → Edit +✓ Ansicht → View +✓ Eingang → Inbox +✓ Gesendet → Sent +... +✅ Import fertig! + Aktualisierte Strings: 247 + Datei: translations/mail-adler_en.ts +``` + +--- + +## 6. Kompletter Workflow Schritt-für-Schritt + +### 6.1 Tag 1: Englisch übersetzen + +```bash +# Schritt 1: Export Deutsch → Englisch +python3 scripts/export_for_translation.py \ + --source translations/mail-adler_de.ts \ + --target en \ + --output export_en_manual.txt + +# Schritt 2: LM Studio starten +# Terminal 1: LM Studio bereits laufen? +# Falls nein: starten Sie LM Studio GUI + +# Schritt 3: Editor öffnen +code export_en_manual.txt # oder Notepad + +# Schritt 4: Copy-Paste Loop +# - Deutsch-Wort aus export_en_manual.txt kopieren +# - In LM Studio Chat eingeben (mit Kontext-Prompt) +# - Übersetzung zurück kopieren +# - In export_en_manual.txt eintragen +# (ca. 250 Wörter = 30-45 Minuten) + +# Schritt 5: Import zurück +python3 scripts/import_translated_strings.py \ + --source translations/mail-adler_de.ts \ + --import export_en_manual.txt \ + --output translations/mail-adler_en.ts + +# Schritt 6: Kompilieren +lrelease translations/mail-adler_en.ts + +# Schritt 7: Git Commit & Release +git add translations/ +git commit -m "Add English translation" +git push +./scripts/release_with_translation.sh en_US +``` + +### 6.2 Tag 2: Französisch + +```bash +# Gleicher Prozess für Französisch +python3 scripts/export_for_translation.py \ + --source translations/mail-adler_de.ts \ + --target fr \ + --output export_fr_manual.txt + +# ... Copy-Paste Loop mit LM Studio (45 Min) +# ... Import + Kompilieren +python3 scripts/import_translated_strings.py \ + --source translations/mail-adler_de.ts \ + --import export_fr_manual.txt \ + --output translations/mail-adler_fr.ts + +# ... Commit & Release +./scripts/release_with_translation.sh fr_FR +``` + +--- + +## 7. Effizienz-Tipps + +### 7.1 Mehrere LM Studio Chats parallel + +``` +LM Studio öffnen: +- Tab 1: Englisch-Prompt (System-Prompt gespeichert) +- Tab 2: Französisch-Prompt +- Tab 3: Spanisch-Prompt + +Dann: +- Export für alle 3 Sprachen öffnen +- Wort kopieren → Tab 1 → Englisch +- Ergebnis kopieren → export_en_manual.txt +- Nächstes Wort → Tab 2 → Französisch +- ... parallel bearbeiten +``` + +### 7.2 Batch-Modus (wenn möglich) + +Wenn ein Deutsch-Satz mehrere Wörter hat, kannst du testen: + +``` +export: "Email Adresse eingeben" + +LM Studio-Prompt: "Übersetze ins Englische (halte zusammenhängende Wörter zusammen): Email Adresse eingeben" + +LM Studio antwortet: "Email Address - Enter" + +Dann manuell tracken welcher Teil was ist +``` + +### 7.3 Glossar aktualisieren + +Wenn du merkst "Ah, 'Konto' sollte immer 'Account' sein, nicht 'User Account'": + +``` +1. Globales GLOSSAR.txt aktualisieren +2. Nächster Export hat korrigiertes Glossar +3. Alle Sprachen konsistent +``` + +--- + +## 8. LM Studio Vorteile für diesen Workflow + +| Aspekt | Vorteil | +|--------|---------| +| **GUI** | Einfach zu bedienen, kein Terminal nötig | +| **Lokal** | Keine Daten an API gesendet | +| **Kostenlos** | Unbegrenzte Nutzung | +| **Schnell** | 1 Wort in 2-3 Sekunden | +| **Modelle** | Jederzeit testen: Mistral, Neural Chat, Orca | +| **Offline** | Funktioniert auch ohne Internet | +| **Semi-Manuell** | Du kontrollierst jedes Wort, KI assistiert | + +--- + +## 9. Checkliste: Englisch komplett + +``` +✅ Export erstellt + export_en_manual.txt existiert + +✅ LM Studio läuft + http://localhost:1234 erreichbar + +✅ Glossar eingeben + Alle Glossar-Wörter in System-Prompt + +✅ Wort-für-Wort übersetzen + Alle STRING #X haben englische Übersetzung + +✅ Import durchführen + python3 scripts/import_translated_strings.py ... + +✅ Kompilieren + lrelease translations/mail-adler_en.ts + → mail-adler_en.qm existiert + +✅ Testen + App starten, Sprache zu Englisch wechseln + Alle Strings korrekt angezeigt + +✅ Commit & Release + git push + GitHub Action erzeugt Release + +✅ Nutzer-Download + Version mit English verfügbar +``` + +--- + +## 10. Zusammenfassung + +**Dein Setup:** +1. ✅ LM Studio (GUI, lokal, kostenlos) +2. ✅ Export-Tool (Python-Script) +3. ✅ Copy-Paste Loop (30-45 Min pro Sprache) +4. ✅ Import-Tool (Python-Script) +5. ✅ Automatisches Rollout (GitHub Actions) + +**Vorteile dieses Ansatzes:** +- 💰 Kostenlos +- 🔒 Privat (alles lokal) +- 🎯 Konsistent (du kontrollierst jedes Wort) +- ⚡ Schnell (LM Studio lädt lokal) +- 🧠 KI assistiert, du kontrollierst +- 📦 Versionierbar (Glossar + Export-Datei) + +**Praxis:** +``` +Montag: Englisch (45 Min) +Dienstag: Französisch (45 Min) +Mittwoch: Spanisch + Portugiesisch (90 Min) +... + +Jede Sprache = neuer Release (auto-rollout) +Nutzer laden neue Version mit neue Sprache +``` diff --git a/LOKALES_LLM_UEBERSETZUNG.md b/LOKALES_LLM_UEBERSETZUNG.md new file mode 100644 index 0000000..894bed3 --- /dev/null +++ b/LOKALES_LLM_UEBERSETZUNG.md @@ -0,0 +1,683 @@ +# Lokales LLM für Mail-Adler Übersetzungen + +## 1. Warum lokales LLM statt API? + +| Kriterium | API (GPT-4) | Lokal (z.B. Ollama) | +|-----------|-----------|------------| +| **Kosten** | €0.03 pro 1K Tokens | ✅ Kostenlos | +| **Datenschutz** | ❌ Daten an OpenAI | ✅ Lokal, privat | +| **Geschwindigkeit** | ⚠️ Network-Latenz | ✅ Sofort | +| **Offline** | ❌ Internet erforderlich | ✅ Funktioniert offline | +| **Kontrolle** | ❌ OpenAI entscheidet | ✅ Du kontrollierst | +| **Konsistenz** | ⚠️ Variabel je Update | ✅ Gleicher Modell | +| **Dezentralisierung** | ❌ US-Firma | ✅ Open-Source | + +--- + +## 2. Beste lokale LLM-Optionen für Deutsch + +### 2.1 Vergleich + +| LLM | Typ | Speicher | Geschwindigkeit | Qualität | Installation | +|-----|-----|----------|-----------------|----------|--------------| +| **Ollama** | Launcher | 4-13GB | ⚡⚡⚡ Sehr schnell | ✅✅✅ Sehr gut | ✅✅✅ Einfach | +| **LM Studio** | GUI | 4-13GB | ⚡⚡ Schnell | ✅✅✅ Sehr gut | ✅✅ Mittel | +| **GPT4All** | GUI | 3-7GB | ⚡⚡ Schnell | ✅✅ Gut | ✅✅ Einfach | +| **LocalAI** | Docker | 4-13GB | ⚡⚡ Schnell | ✅✅ Gut | ⚠️ Komplex | +| **Hugging Face** | Lokal | Variabel | ⚡ Langsam | ✅✅ Gut | ⚠️ Komplex | + +### 2.2 EMPFEHLUNG: Ollama + +**Warum Ollama?** +- ✅ Einfachste Installation (1 Klick) +- ✅ Schnellste Performance +- ✅ Beste Modell-Bibliothek +- ✅ REST API (leicht zu integrieren) +- ✅ Läuft auch auf macOS/Linux/Windows + +--- + +## 3. Ollama Setup für Deutsch-Übersetzung + +### 3.1 Installation + +**Windows 11:** +```bash +# Download: https://ollama.ai/download +# → Ollama-0.1.26-windows.exe (ca. 200MB) + +# Installation: +1. Doppelklick auf .exe +2. Admin-Passwort eingeben +3. "Ollama" startet automatisch (im Systemtray) +4. Terminal öffnen, testen: + +ollama --version +# Output: ollama version 0.1.26 +``` + +**Linux (Ubuntu):** +```bash +curl https://ollama.ai/install.sh | sh +ollama --version +``` + +**macOS:** +```bash +# Via Homebrew oder direkter Download +brew install ollama +ollama --version +``` + +### 3.2 Beste Modelle für Deutsch-Übersetzung + +#### Option A: Mistral 7B (Empfohlen für Anfänger) +```bash +ollama pull mistral:7b +# Download: ~4.1GB +# Performance: ⚡⚡⚡ Sehr schnell (auf 8GB RAM) +# Qualität: ✅✅ Gut für Deutsch +``` + +**Test:** +```bash +ollama run mistral:7b + +>>> Übersetze ins Englische: +>>> Eingang +The Inbox +``` + +#### Option B: Neural Chat (Intel - optimiert für Deutsch) +```bash +ollama pull neural-chat:7b +# Download: ~4.7GB +# Performance: ⚡⚡⚡ Schnell +# Qualität: ✅✅✅ Sehr gut für Deutsch +``` + +#### Option C: Orca 2 (Höhere Qualität, langsamer) +```bash +ollama pull orca-mini:13b +# Download: ~8.4GB +# Performance: ⚡⚡ Mittel +# Qualität: ✅✅✅ Sehr gut +# Empfohlen nur mit 16GB+ RAM +``` + +**EMPFEHLUNG:** Starte mit **Mistral 7B** (schnell & gut) + +### 3.3 Ollama Server starten + +```bash +# Terminal 1: Ollama Server im Hintergrund +ollama serve + +# Output: +# 2025/02/03 14:30:00 "Listening on 127.0.0.1:11434" + +# Bleibt laufen im Hintergrund +# Terminal 2+: Weitere Befehle +ollama run mistral:7b +``` + +--- + +## 4. Mail-Adler Translation Tool (Python) + +### 4.1 Translation Manager Script + +```python +#!/usr/bin/env python3 +# scripts/translate_manual.py + +import requests +import json +import sys +from pathlib import Path +import argparse +from typing import Dict, List + +class OllamaTranslator: + def __init__(self, model: str = "mistral:7b", base_url: str = "http://localhost:11434"): + self.model = model + self.base_url = base_url + self.cache = {} + + def translate_text(self, text: str, target_lang: str) -> str: + """Übersetze Text mit lokalem LLM""" + + # Cache-Check + cache_key = f"{text}::{target_lang}" + if cache_key in self.cache: + return self.cache[cache_key] + + # Prompt-Vorlage (siehe Punkt 5) + prompt = f"""Du bist ein präziser Übersetzer für die Mail-Anwendung "Mail-Adler". + +ANWEISUNG: +- Übersetze NUR das Wort/die Phrase +- KEINE Erklärung +- Kurz und prägnant +- Behalte Formatierung (.ts Datei) + +SPRACHEN: +- Source: Deutsch +- Target: {self._get_lang_name(target_lang)} + +TEXT ZUM ÜBERSETZEN: +{text} + +ÜBERSETZUNG:""" + + try: + response = requests.post( + f"{self.base_url}/api/generate", + json={ + "model": self.model, + "prompt": prompt, + "stream": False, + "temperature": 0.3, # Niedrig = konsistent + }, + timeout=60 + ) + + if response.status_code == 200: + result = response.json() + translation = result.get("response", "").strip() + self.cache[cache_key] = translation + return translation + else: + print(f"❌ Ollama Error: {response.status_code}") + return text # Fallback + + except requests.exceptions.ConnectionError: + print("❌ Ollama nicht erreichbar!") + print(" Starten Sie: ollama serve") + return text + + def _get_lang_name(self, lang_code: str) -> str: + """Konvertiere Lang-Code zu Name""" + langs = { + "en_US": "English (American)", + "en_GB": "English (British)", + "fr_FR": "French", + "es_ES": "Spanish", + "it_IT": "Italian", + "nl_NL": "Dutch", + "pl_PL": "Polish", + "sv_SE": "Swedish" + } + return langs.get(lang_code, lang_code) + + def translate_ts_file(self, source_file: str, target_lang: str, output_file: str): + """Übersetze komplette .ts Datei""" + import xml.etree.ElementTree as ET + + print(f"\n📝 Übersetze {source_file} → {target_lang}") + print("=" * 60) + + tree = ET.parse(source_file) + root = tree.getroot() + + # Namespace + ns = {'ts': 'http://trolltech.com/TS'} + ET.register_namespace('', 'http://trolltech.com/TS') + + translated_count = 0 + skipped_count = 0 + + for context in root.findall('.//context', ns): + context_name = context.find('.//name', ns) + + for message in context.findall('.//message', ns): + source_elem = message.find('source', ns) + translation_elem = message.find('translation', ns) + + if source_elem is not None and translation_elem is not None: + source_text = source_elem.text + + # Überspringe bereits übersetzte + if translation_elem.text and translation_elem.get('type') != 'unfinished': + skipped_count += 1 + continue + + # Übersetze + print(f"DE: {source_text}") + translated = self.translate_text(source_text, target_lang) + print(f"{target_lang.split('_')[0].upper()}: {translated}") + + translation_elem.text = translated + translation_elem.set('type', 'finished') + translated_count += 1 + print("-" * 60) + + # Speichern + tree.write(output_file, encoding='UTF-8', xml_declaration=True) + + print(f"\n✅ Fertig!") + print(f" Übersetzt: {translated_count}") + print(f" Übersprungen: {skipped_count}") + print(f" Datei: {output_file}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Mail-Adler Translation Manager') + + parser.add_argument('--model', default='mistral:7b', + help='Ollama-Modell (default: mistral:7b)') + parser.add_argument('--source', required=True, + help='Quell-.ts Datei (z.B. translations/mail-adler_de.ts)') + parser.add_argument('--target', required=True, + help='Zielsprache (z.B. en_US, fr_FR, es_ES)') + parser.add_argument('--output', required=True, + help='Ausgangs-.ts Datei') + + args = parser.parse_args() + + translator = OllamaTranslator(model=args.model) + translator.translate_ts_file(args.source, args.target, args.output) +``` + +### 4.2 Verwendung des Scripts + +```bash +# Terminal vorbereiten +# Terminal 1: Ollama Server +ollama serve + +# Terminal 2: Übersetzung starten +cd /path/to/mail-adler + +# Mistral 7B laden (beim ersten Mal) +ollama pull mistral:7b + +# Englisch übersetzen +python3 scripts/translate_manual.py \ + --model mistral:7b \ + --source translations/mail-adler_de.ts \ + --target en_US \ + --output translations/mail-adler_en.ts + +# Französisch übersetzen +python3 scripts/translate_manual.py \ + --model mistral:7b \ + --source translations/mail-adler_de.ts \ + --target fr_FR \ + --output translations/mail-adler_fr.ts +``` + +**Output-Beispiel:** +``` +📝 Übersetze translations/mail-adler_de.ts → en_US +============================================================ +DE: Eingang +EN: Inbox +------------------------------------------------------------ +DE: Gesendet +EN: Sent +------------------------------------------------------------ +DE: Papierkorb +EN: Trash +------------------------------------------------------------ +... +✅ Fertig! + Übersetzt: 247 + Übersprungen: 0 + Datei: translations/mail-adler_en.ts +``` + +--- + +## 5. Optimal Prompt-Vorlage für Übersetzungen + +### 5.1 Template für Batch-Übersetzung (EMPFOHLEN) + +``` +Du bist ein präziser Übersetzer für die Mail-Anwendung "Mail-Adler". + +RICHTLINIEN: +- Übersetze PRÄZISE und KONSISTENT +- Halte Formatierung bei +- Technische Begriffe korrekt (IMAP, SMTP, etc.) +- Kurze, prägnante Begriffe +- KEINE Erklärung, nur Übersetzung + +GLOSSAR (Diese Begriffe immer gleich übersetzen): +- Inbox → Eingang (NICHT Postfach) +- Sent → Gesendet +- Drafts → Entwürfe (NICHT Konzepte) +- Trash → Papierkorb (NICHT Müllkorb) +- Spam → Spam (kein Übersetzung) +- Archive → Archiv +- Flagged → Markiert +- Read → Gelesen +- Unread → Ungelesen +- IMAP → IMAP (bleibt gleich) +- SMTP → SMTP (bleibt gleich) +- Encrypt → Verschlüsseln +- Decrypt → Entschlüsseln + +SPRACHEN: +- Source: Deutsch +- Target: [SPRACHE HIER] + +ZU ÜBERSETZENDE TEXTE: +[TEXT HIER] + +AUSGABE-FORMAT: +Deutsch: [original] +[Zielsprache]: [Übersetzung] +--- +``` + +### 5.2 Template für einzelne Wörter/Phrasen + +``` +Übersetze diesen Text aus der Mail-Anwendung "Mail-Adler" präzise ins [ZIELSPRACHE]. + +Text: "[TEXT]" + +Antwort (nur Übersetzung): +``` + +### 5.3 Was ist besser: Batch vs. Single? + +| Ansatz | Vorteile | Nachteile | +|--------|----------|----------| +| **Batch (10-50 Strings)** | ✅ Konsistenz, Kontext | ⚠️ Längere Verarbeitung | +| **Single (1 Wort)** | ✅ Schnell, einfach | ❌ Inkonsistenzen möglich | + +**EMPFEHLUNG:** **Batch mit Glossar** +- Alle Strings einer Kategorie zusammen +- Glossar definiert Fachbegriffe +- → Maximale Konsistenz + +--- + +## 6. Version-Management beim Übersetzen + +### 6.1 Versionierung mit Sprach-Updates + +**Struktur:** +``` +Mail-Adler Versionen: +├─ v0.1.0-de (Deutsch Release) +├─ v0.1.1-de+en (Deutsch + English hinzugefügt) +├─ v0.1.2-de+en+fr (+ Französisch) +└─ v0.2.0-de+en+fr+es (+ Spanisch, neue Features) +``` + +**CMakeLists.txt:** +```cmake +# Version-Management mit Sprachen +set(MAIL_ADLER_VERSION_MAJOR 0) +set(MAIL_ADLER_VERSION_MINOR 1) +set(MAIL_ADLER_VERSION_PATCH 0) +set(MAIL_ADLER_LANGUAGES "de;en;fr;es") # Aktive Sprachen + +# Dynamische Versionsstring +string(REPLACE ";" "+" LANG_STRING "${MAIL_ADLER_LANGUAGES}") +set(MAIL_ADLER_VERSION_WITH_LANGS + "${MAIL_ADLER_VERSION_MAJOR}.${MAIL_ADLER_VERSION_MINOR}.${MAIL_ADLER_VERSION_PATCH}-${LANG_STRING}") + +message(STATUS "Mail-Adler Version: ${MAIL_ADLER_VERSION_WITH_LANGS}") +``` + +### 6.2 Automated Release beim Sprach-Update + +```bash +# scripts/release_with_translation.sh +#!/bin/bash + +TARGET_LANG=$1 # z.B. "en_US", "fr_FR" + +if [ -z "$TARGET_LANG" ]; then + echo "Nutzung: ./scripts/release_with_translation.sh " + echo "Beispiel: ./scripts/release_with_translation.sh fr_FR" + exit 1 +fi + +echo "🌍 Mail-Adler Translation Release" +echo "==================================" + +# 1. Übersetzung durchführen +echo "📝 Übersetze zu ${TARGET_LANG}..." +python3 scripts/translate_manual.py \ + --source translations/mail-adler_de.ts \ + --target ${TARGET_LANG} \ + --output translations/mail-adler_${TARGET_LANG%_*}.ts + +# 2. Kompilieren +echo "🔨 Kompiliere Übersetzungen..." +lrelease translations/mail-adler_*.ts + +# 3. Version erhöhen +echo "📌 Erhöhe Version..." +CURRENT_VERSION=$(grep "MAIL_ADLER_VERSION_PATCH" CMakeLists.txt | grep -oP '\d+') +NEW_VERSION=$((CURRENT_VERSION + 1)) + +sed -i "s/set(MAIL_ADLER_VERSION_PATCH ${CURRENT_VERSION})/set(MAIL_ADLER_VERSION_PATCH ${NEW_VERSION})/g" CMakeLists.txt + +# 4. Sprachenliste updaten +echo "🌐 Update Sprachen-Liste..." +LANG_CODE=${TARGET_LANG%_*} +sed -i "s/set(MAIL_ADLER_LANGUAGES \"/set(MAIL_ADLER_LANGUAGES \"${LANG_CODE};/g" CMakeLists.txt + +# 5. Git Commit +echo "📦 Erstelle Release-Commit..." +git add translations/ CMakeLists.txt +git commit -m "Release: Mail-Adler v0.1.${NEW_VERSION} + ${TARGET_LANG}" + +# 6. Tag erstellen +git tag -a "v0.1.${NEW_VERSION}" -m "Mail-Adler Version 0.1.${NEW_VERSION} - ${TARGET_LANG} Translation" + +echo "✅ Release fertig!" +echo " Version: v0.1.${NEW_VERSION}" +echo " Sprachen: ${LANG_CODE}" +echo "" +echo "Push mit: git push && git push --tags" +``` + +### 6.3 Automatisches Rollout (GitHub Actions) + +```yaml +# .github/workflows/translation-release.yml +name: Translation Release + +on: + push: + paths: + - 'translations/mail-adler_*.ts' + - 'CMakeLists.txt' + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Build & Release + run: | + # Compile translations + sudo apt-get install -y qt6-tools-dev + lrelease translations/mail-adler_*.ts + + # Build + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja + ninja + + # Test + ninja test || true + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + files: | + build/mail-adler_* + translations/mail-adler_*.qm + tag_name: ${{ github.ref }} +``` + +--- + +## 7. Workflow: Schritt-für-Schritt + +### 7.1 Neue Strings hinzufügen (Entwickler) + +```bash +# 1. Schreibe Code mit Deutsch-Strings +# src/ui/newfeature.cpp: +ui->label->setText(tr("Neue Funktion")); + +# 2. Extrahiere Strings +cd mail-adler +lupdate src/ forms/ -ts translations/mail-adler_de.ts + +# 3. Commit +git add translations/mail-adler_de.ts +git commit -m "Add new strings for new feature" +``` + +### 7.2 Übersetzen (Du selbst) + +```bash +# 1. Ollama Server starten (im Hintergrund) +ollama serve & + +# 2. Stelle sicher, dass Modell da ist +ollama pull mistral:7b + +# 3. Übersetze zu allen Sprachen +./scripts/release_with_translation.sh en_US +./scripts/release_with_translation.sh fr_FR +./scripts/release_with_translation.sh es_ES + +# 4. Review (optional, mit Sicht auf Ergebnisse) +# Öffne die .ts Dateien und prüfe Qualität +``` + +### 7.3 Automatisches Rollout + +```bash +# 1. Push zu GitHub +git push origin main +git push origin --tags + +# 2. GitHub Actions: +# - Kompiliert Übersetzungen +# - Baut Mail-Adler +# - Erstellt Release mit .qm Dateien +# - Auto-Rollout zu Website + +# 3. Nutzer: +# - Download neue Version +# - Sprachauswahl in Einstellungen +# - Automatischer Download .qm Datei +``` + +--- + +## 8. Kostenlose lokale LLM-Alternativen + +### Falls Ollama nicht reicht: + +| Tool | Download | RAM | Deutsch | Einfachheit | +|------|----------|-----|---------|-------------| +| **LM Studio** | https://lmstudio.ai | 4-16GB | ✅ Gut | ✅✅ GUI | +| **GPT4All** | https://gpt4all.io | 3-8GB | ⚠️ OK | ✅✅ GUI | +| **LocalAI** | https://localai.io | 4-16GB | ✅ Gut | ⚠️ Docker | +| **Hugging Face** | huggingface.co | 2-32GB | Variabel | ⚠️ Code | + +### LM Studio Alternative zu Ollama + +```bash +# Download & Start: https://lmstudio.ai +# 1. GUI öffnen +# 2. "Mistral 7B" suchen & loaded +# 3. "Local Server" starten (Port 1234) + +# Dann im Script anpassen: +python3 scripts/translate_manual.py \ + --model "mistral:7b" \ + --source translations/mail-adler_de.ts \ + --target en_US \ + --output translations/mail-adler_en.ts + # (Funktioniert mit LM Studio auch - kompatible API) +``` + +--- + +## 9. Qualitätskontrolle + +### 9.1 Übersetzte Strings prüfen + +```bash +# Script zum Vergleichen +#!/bin/bash +# scripts/check_translations.sh + +echo "Übersetzte Strings vs Original:" +grep "emailContent->setText(translated); + + // Zeige auch Original (kleiner) + ui->originalContent->setText(emailBody); +} +``` + +### Optionen: + +| Quelle | Datenschutz | Qualität | Geschwindigkeit | +|--------|-------------|----------|-----------------| +| **Google Translate API** | ❌ Schlecht | ✅✅ Sehr gut | ⚡ Schnell | +| **DeepL API** | ⚠️ EU | ✅✅ Sehr gut | ⚡ Schnell | +| **Ollama lokal** | ✅✅ Perfekt | ✅ Gut | ⚡⚡ Mittel | +| **LibreTranslate OSS** | ✅✅ Perfekt | ✅ Gut | ⚡⚡ Mittel | + +**EMPFEHLUNG für Mail-Adler: Ollama lokal** (dezentralisiert!) + +```python +# src/translation/ollama_translator.py +import requests + +class OllamaEmailTranslator: + def __init__(self, base_url="http://localhost:11434"): + self.base_url = base_url + + def translate_email(self, text: str, target_lang: str) -> str: + """Übersetze Email-Text mit lokalem Ollama""" + + prompt = f"""Übersetze folgende Email ins {target_lang}. +Halte Formatierung und Umlaute. +Antworte nur mit Übersetzung, keine Erklärung. + +Text: {text} + +Übersetzung:""" + + response = requests.post( + f"{self.base_url}/api/generate", + json={ + "model": "mistral:7b", + "prompt": prompt, + "stream": False, + } + ) + + return response.json()["response"].strip() +``` + +--- + +## 3. Copy-Paste überall (Universell) + +### Qt macht das automatisch: + +```cpp +// In jedem QTextEdit/QLineEdit: +// Ctrl+C/Ctrl+V funktionieren IMMER +// Rechts-Klick → Copy/Paste funktioniert IMMER + +// In QTableWidget/QTreeWidget: +// Auch Copy-Paste möglich (Zellen-Inhalte) + +// Eigene Implementierung für Custom: +class CustomText : public QWidget { + Q_OBJECT +private: + void keyPressEvent(QKeyEvent *event) override { + if (event->key() == Qt::Key_C && event->modifiers() == Qt::ControlModifier) { + QApplication::clipboard()->setText(selectedText()); + } + if (event->key() == Qt::Key_V && event->modifiers() == Qt::ControlModifier) { + pasteFromClipboard(); + } + } +}; +``` + +### In Mail-Adler: +- ✅ Email-Text: Copy-Paste überall +- ✅ Email-Header: Copy-Paste Absender, Betreff, etc. +- ✅ Anhang-Namen: Copy-Paste +- ✅ Links: Copy-Paste +- ✅ Metadaten: Alle markierbar & kopierbar + +**Standard in Qt - keine spezielle Implementierung nötig!** + +--- + +## 4. Tastatur-Shortcuts + +### Mail-Adler Standard-Shortcuts + +``` +NAVIGATION: +├─ Tab → Nächste Email / Feld +├─ Shift+Tab → Vorherige Email / Feld +├─ Arrow Up/Down → Navigation in Ordner/Liste +├─ Ctrl+Home → Erste Email +├─ Ctrl+End → Letzte Email +├─ Page Up/Down → Seitenweise scrollen +└─ Escape → Zurück zur Ordnerliste + +LESEN: +├─ Space → Page Down (Email lesen) +├─ Shift+Space → Page Up +├─ Ctrl+F → Im Text suchen +├─ Ctrl+P → Email drucken +└─ Ctrl+Shift+V → Plaintext-Modus + +SCHREIBEN: +├─ Ctrl+N → Neue Email +├─ Ctrl+Shift+D → Aus Entwürfen fortfahren +├─ Tab → Nächstes Feld (An → Cc → Betreff → Text) +├─ Ctrl+Enter → Senden +└─ Ctrl+Shift+S → Als Entwurf speichern + +ORDNER: +├─ Ctrl+1 → Eingang +├─ Ctrl+2 → Gesendet +├─ Ctrl+3 → Entwürfe +├─ Ctrl+4 → Spam +├─ Ctrl+5 → Archiv +├─ Ctrl+6 → Custom Ordner +├─ Ctrl+Shift+N → Neuer Ordner +└─ Delete → Ordner löschen + +AKTIONEN: +├─ Ctrl+R → Antworten +├─ Ctrl+Shift+R → Allen antworten +├─ Ctrl+Shift+F → Weiterleiten +├─ Ctrl+M → Als gelesen markieren +├─ Ctrl+* → Als Markiert (*) togglen +├─ Delete → Löschen → Papierkorb +├─ Ctrl+Delete → Permanent löschen +├─ Ctrl+S → Speichern / Synchronisieren +└─ F5 → Aktualisieren / Neu laden + +ALLGEMEIN: +├─ Ctrl+Q → Beenden +├─ Ctrl+, → Einstellungen +├─ F1 → Hilfe +├─ Ctrl+H → Verlauf +├─ Ctrl+L → Adressleiste aktivieren +└─ Alt+Numbers → Menu nutzen +``` + +### Implementierung in Qt: + +```cpp +// src/ui/MainWindow.cpp + +void MainWindow::setupKeyboardShortcuts() { + // Neue Email + new QShortcut(Qt::CTRL + Qt::Key_N, this, SLOT(on_actionNew_triggered())); + + // Antworten + new QShortcut(Qt::CTRL + Qt::Key_R, this, SLOT(on_actionReply_triggered())); + + // Senden (in Compose) + new QShortcut(Qt::CTRL + Qt::Key_Return, this, SLOT(on_actionSend_triggered())); + + // Navigation + new QShortcut(Qt::CTRL + Qt::Key_1, this, [this]() { + switchToFolder("Eingang"); + }); + + new QShortcut(Qt::CTRL + Qt::Key_2, this, [this]() { + switchToFolder("Gesendet"); + }); + + // Löschen + new QShortcut(Qt::Key_Delete, this, SLOT(on_actionDelete_triggered())); + + // Spam + new QShortcut(Qt::CTRL + Qt::Key_Exlamation, this, SLOT(on_actionSpam_triggered())); +} +``` + +### Vim-Style Shortcuts (Optional für Phase D): + +```cpp +// Für Power-User: +// :q → Beenden +// j/k → Down/Up +// d → Löschen +// a → Antworten +// r → Antworten +// w → Weiterleiten +// etc. + +// Konfigurierbar in Einstellungen: +// [] Enable Vim Keybindings +``` + +--- + +## 5. Kombination: Englisch → Google Translate → Rest + +### Praktischer Workflow (für dich): + +``` +Tag 1: ENGLISCH (Manuell - sorgfältig) +═══════════════════════════════════ +python3 export_to_csv.py \ + --source translations/mail-adler_de.ts \ + --output glossary_all.csv \ + --languages "English" + +→ Glossary mit Deutsch + leerer English-Spalte +→ LM Studio: 70 Wörter eingeben + Abbrechen = Cancel + Anmeldedaten = Credentials + ... (30 Min) +→ Speichern + +Day 2: GOOGLE TRANSLATE (Auto) +═══════════════════════════════════ +1. Englisch-Spalte aus Excel kopieren (A1:A70) +2. Google Translate öffnen +3. Paste → Rechts: "Französisch" wählen +4. Auto-Übersetzung +5. Kopieren → Excel + +→ Repeat für: Español, Português, Italiano, Niederländisch, Polnisch, ... + (Pro Sprache: 2-3 Minuten) + +Day 3: IMPORT & RELEASE +═══════════════════════ +./batch_import_parallel.sh + → 20-30 Sekunden + +git push + → GitHub Actions + → Release + +TOTAL: 2.5 Tage für 30 Sprachen statt 22 Tage! +``` + +### So sieht Excel aus: + +```csv +Deutsch,English,Français,Español,Português,Italiano,Niederländisch,Polnisch,... +Abbrechen,Cancel,Annuler,Cancelar,Cancelar,Annulla,Annuleren,Anuluj,... +Anmeldedaten,Credentials,Identifiants,Credenciales,Credenciais,Credenziali,Inloggegevens,Poświadczenia,... +... +``` + +**Englisch = Manuell sorgfältig** +**Alles andere = Google Translate Auto** + +--- + +## 6. Zusammenfassung: Praktische Mail-Adler Features + +| Feature | Status | Nutzen | +|---------|--------|--------| +| **Auto-Translate Email-Inhalt** | Phase C | 🌍 User liest Emails in beliebiger Sprache | +| **Copy-Paste überall** | Phase B | ✅ Standard Qt | +| **Tastatur-Shortcuts** | Phase B | ⚡ Schnelles Arbeiten | +| **Englisch manuell** | Phase B | 👤 Sorgfaltig | +| **Englisch→Andere via Google** | Phase B | 🚀 Super schnell | +| **Vim-Keybindings** | Phase D | 🎮 Optional für Power-User | + +--- + +## 7. Copy-Paste Implementierung (überall) + +```cpp +// src/util/ClipboardHelper.h +class ClipboardHelper { +public: + static QString getText() { + return QApplication::clipboard()->text(); + } + + static void setText(const QString &text) { + QApplication::clipboard()->setText(text); + } + + static void copySelection(QAbstractItemView *view) { + // Kopiere ausgewählte Zeilen/Zellen + QModelIndexList indexes = view->selectionModel()->selectedIndexes(); + QString text; + for (const auto &index : indexes) { + text += index.data().toString() + "\t"; + } + setText(text); + } +}; + +// Nutzung überall: +// Rechts-Klick im Email-Text → Copy +// Rechts-Klick in Ordnerliste → Copy Ordnernamen +// etc. - alles Standard Qt! +``` + +--- + +## 8. Google Translate vs. Ollama für Email-Inhalt (Phase C) + +``` +Nutzer erhält Emails in verschiedenen Sprachen: + +Option A: Google Translate (Phase C - später) +├─ Schnell ⚡ +├─ Qualität sehr gut ✅✅ +└─ Datenschutz ❌ (Daten zu Google) + +Option B: Ollama lokal +├─ Schnell ⚡⚡ (lokal) +├─ Qualität gut ✅ +└─ Datenschutz ✅✅ (alles lokal) + +EMPFEHLUNG: Ollama (dezentralisiert!) +``` + +--- + +## Fazit: + +✅ **Google Translate für deine Übersetzungsarbeit** (Englisch → Andere) +✅ **Ollama für User-Feature** (Email-Inhalt Auto-Übersetzen) +✅ **Copy-Paste überall** (Standard in Qt) +✅ **Tastatur-Shortcuts** (Schneller arbeiten) + +**Alles machbar und praktisch!** 🎯 diff --git a/PROJEKT_MANAGEMENT_SYSTEM.md b/PROJEKT_MANAGEMENT_SYSTEM.md new file mode 100644 index 0000000..9679bb6 --- /dev/null +++ b/PROJEKT_MANAGEMENT_SYSTEM.md @@ -0,0 +1,790 @@ +# Mail-Adler Projekt-Management System + +## 1. Überblick: Task Lifecycle (PRAGMATISCH - KEINE Zeitplanung!) + +``` +┌─────────────────────────────────────────────────────────┐ +│ Task erstellen (von wem auch immer!) │ +│ ├─ Title + Beschreibung │ +│ ├─ Priorität: 1 (niedrig) bis 5 (höchst) │ +│ └─ [Externe Task?] Fertigstellungsdatum │ +├─────────────────────────────────────────────────────────┤ +│ Duplikat-Check │ +│ └─ System warnt: "Ähnliche Task existiert schon" │ +├─────────────────────────────────────────────────────────┤ +│ Task wartet (offen) │ +│ └─ Nach Dringlichkeit sortiert in Daily Mail │ +├─────────────────────────────────────────────────────────┤ +│ AUTO-ASSIGN: Georg/Developer übernimmt │ +│ ├─ Status → "In Arbeit" │ +│ └─ (Wenn eine Task fertig wird → nächste dringste) │ +├─────────────────────────────────────────────────────────┤ +│ Task fertig │ +│ ├─ Status → "Erledigt" │ +│ ├─ AUTO-ASSIGN nächste dringste Task │ +│ └─ Tägliche Mail zeigt Updates │ +└─────────────────────────────────────────────────────────┘ +``` + +**WICHTIG: KEINE Zeitplanung! Nur nach Prio arbeiten!** + +--- + +## 2. Task-Eingabe Template (Wie man gute Aufgaben stellt) + +### Checklist für gute Task-Beschreibung + +``` +TITEL (kurz, prägnant) +└─ Max 10 Wörter +└─ Beispiel: "IMAP Login mit 2FA implementieren" + +BESCHREIBUNG (strukturiert) +├─ Was: Kurze Zusammenfassung (2-3 Sätze) +├─ Warum: Geschäftliche Begründung +├─ Anforderungen: +│ ├─ [ ] Spezifische Anforderung 1 +│ ├─ [ ] Spezifische Anforderung 2 +│ └─ [ ] Spezifische Anforderung 3 +├─ Akzeptanzkriterien: +│ ├─ [ ] Funktioniert mit GMX +│ ├─ [ ] Funktioniert mit Web.de +│ ├─ [ ] Tests grün +│ └─ [ ] Code-Review bestanden +├─ Links & Kontext: +│ ├─ GitHub Issue: #123 +│ ├─ Design-Doc: link +│ └─ Abhängigkeiten: Task #456 +├─ Geschätzte Dauer: 8h / 1 Tag / 1 Woche +├─ Labels: bug, feature, documentation, critical +└─ Dringlichkeit: Heute / Diese Woche / Später + +BEISPIEL (GUTE Task): +─────────────────────────────── +IMAP Login mit 2FA implementieren + +WAS: +Füge Two-Factor Authentication zu IMAP-Login hinzu für GMX & Telekom-Konten + +WARUM: +Benutzer mit 2FA können sich sonst nicht anmelden → Frustration + +ANFORDERUNGEN: +- [ ] Support für: GMX, Telekom (Google später - Phase D) +- [ ] IMAP-Authentifizierung mit App-Passwort +- [ ] Fehlerbehandlung: Falsche Kredentiale +- [ ] Security: Passwörter verschlüsselt speichern + +AKZEPTANZKRITERIEN: +- [ ] Benutzer mit 2FA kann sich anmelden +- [ ] Fehlermeldung bei falschen Daten klar +- [ ] App-Passwort wird korrekt in Keychain gespeichert +- [ ] Tests bestanden (unit + integration) +- [ ] Code-Review ok + +LINKS: +- Abhängig: Task #340 (IMAP Core) +- Design: https://github.com/georg0480/mailadler/wiki/2FA +- Dokument: docs/2fa-implementation.md + +DAUER: 16 Stunden (2 Arbeitstage) +LABELS: feature, security +DRINGLICHKEIT: Diese Woche + +─────────────────────────────── +``` + +--- + +## 3. Duplikat-Prevention System + +### Automatische Duplikat-Erkennung + +```python +#!/usr/bin/env python3 +# tools/task_duplicate_checker.py + +import difflib +from database import Database + +class TaskDuplicateChecker: + def __init__(self): + self.db = Database() + + def check_duplicate(self, new_title: str, new_description: str) -> dict: + """ + Prüfe ob Task ähnlich existiert + Return: {"is_duplicate": bool, "similar_tasks": [...]} + """ + + existing_tasks = self.db.get_open_tasks() + + similar_tasks = [] + + for task in existing_tasks: + # Title Similarity (80%+) + title_ratio = difflib.SequenceMatcher( + None, + new_title.lower(), + task['title'].lower() + ).ratio() + + # Description Similarity (70%+) + desc_ratio = difflib.SequenceMatcher( + None, + new_description.lower(), + task['description'].lower() + ).ratio() + + if title_ratio > 0.80 or desc_ratio > 0.70: + similar_tasks.append({ + "id": task['id'], + "title": task['title'], + "status": task['status'], + "similarity": max(title_ratio, desc_ratio), + "assigned_to": task['assigned_to'] + }) + + return { + "is_duplicate": len(similar_tasks) > 0, + "similar_tasks": sorted( + similar_tasks, + key=lambda x: x['similarity'], + reverse=True + )[:3] # Top 3 ähnliche + } + + def warn_before_create(self, new_title: str, new_description: str): + """ + Vor Task-Erstellung warnen + """ + result = self.check_duplicate(new_title, new_description) + + if result['is_duplicate']: + print("\n⚠️ WARNUNG: Ähnliche Tasks existieren bereits!\n") + + for task in result['similar_tasks']: + print(f"Task #{task['id']}: {task['title']}") + print(f" Status: {task['status']}") + print(f" Ähnlichkeit: {task['similarity']*100:.0f}%") + print(f" Zugeordnet: {task['assigned_to'] or 'Niemand'}\n") + + response = input("Trotzdem neue Task erstellen? (ja/nein): ") + return response.lower() == 'ja' + + return True +``` + +### UI: Duplikat-Warnung + +``` +Neue Task eintippen: + +Titel: "IMAP Login implementieren" + ↓ +System prüft Duplikate... + ↓ +⚠️ ÄHNLICHE TASKS GEFUNDEN: + +[1] Task #456: "IMAP-Verbindung implementieren" + Status: In Arbeit (Developer: Alice) + Ähnlichkeit: 85% + +[2] Task #389: "IMAP Authentifizierung" + Status: Code-Review (Developer: Bob) + Ähnlichkeit: 72% + +💡 Tipp: Vielleicht schon eine Task für dein Anliegen offen? + +[Trotzdem erstellen] [Task #456 anschauen] +``` + +--- + +## 4. Auto-Assign System (AUTOMATISCH nächste dringste Task!) + +### Wie es funktioniert: + +```python +# tools/auto_assign.py +class AutoAssign: + def on_task_completed(self, task_id: str): + """ + Wenn Task fertig → nächste dringste AUTO-ASSIGN! + """ + + # 1. Mark Task als DONE + self.db.update_task(task_id, status="DONE") + + # 2. Finde Developer der diese Task hatte + developer = self.db.get_task_assignee(task_id) + + # 3. Finde nächste dringste offene Task + next_task = self.db.get_highest_priority_open_task() + + if next_task: + # 4. AUTO-ASSIGN an selben Developer + self.db.assign_task(next_task['id'], developer) + + # 5. Mail an Developer + self.send_mail(developer, + f"Neue Task #{next_task['id']} auto-assigned: {next_task['title']}") + + # 6. Mail an alle (täglich email wird aktualisiert) + return True + + return False +``` + +### Workflow: + +``` +Georg arbeitet an Task #501 (Prio 5) + ↓ +Georg: "DONE #501" (Reply zu Daily Mail) + ↓ +System: + 1. Task #501 → Status DONE + 2. Finde nächste dringste: Task #512 (Prio 5, offen) + 3. AUTO-ASSIGN #512 → Georg + 4. Mail: "Georg, neue Task #512 assigned!" + 5. Morgen Daily Mail zeigt: Georg arbeitet an #512 +``` + +**WICHTIG: MAX 1 Task pro Developer gleichzeitig!** + +--- + +## 5. Dringlichkeits-Verarbeitung (Task-Reihenfolge) + +### Sortierungs-Algorithmus + +```python +def get_tasks_by_urgency(self) -> list: + """ + Sortiere Tasks nach Dringlichkeit + + Priorität: + 1. Tasks mit Deadline heute (CRITICAL) + 2. Tasks mit Deadline diese Woche (HIGH) + 3. Tasks ohne Deadline (NORMAL) + 4. In gleicher Kategorie: Nach Erstellungsdatum (älter zuerst) + 5. Gleiches Datum: Nach Stimmen/Upvotes (mehr = höher) + """ + + tasks = self.db.get_open_tasks() + + def priority_score(task): + days_until = (task['deadline'] - datetime.now()).days + + # Basis-Score nach Deadline + if days_until == 0: + base_score = 1000 # HEUTE = höchste Priorität + elif days_until <= 7: + base_score = 500 # Diese Woche + elif days_until <= 30: + base_score = 100 # Diesen Monat + else: + base_score = 10 # Später + + # Zusatz-Punkte: Upvotes/Stimmen + upvotes = len(task.get('upvoted_by', [])) + upvote_bonus = upvotes * 5 + + # Zusatz-Punkte: Alter (älter = wichtiger) + days_old = (datetime.now() - task['created_at']).days + age_bonus = days_old * 0.1 + + # Zusatz-Punkte: Label "CRITICAL" + label_bonus = 100 if 'critical' in task.get('labels', []) else 0 + + return base_score + upvote_bonus + age_bonus + label_bonus + + # Sortiere nach Score + return sorted(tasks, key=priority_score, reverse=True) +``` + +### Gleiche Dringlichkeit: Team-Abstimmung + +``` +Task #456: IMAP Login [DEADLINE: Morgen] +Task #389: 2FA Support [DEADLINE: Morgen] + +Beide EQUAL dringend! + +🎯 TEAM-ABSTIMMUNG: +├─ Alice: 👍 (Task #456) +├─ Bob: 👍 (Task #456) +└─ Charlie: 👍 (Task #389) + +→ Task #456 gewinnt (2 Stimmen) +→ Task #389 wird 2. Priorität + +Alle Developer können **einmal** pro Task abstimmen +``` + +--- + +## 6. External Developer: Onboarding & Feedback + +### Guter Onboarding (Schnelle Einarbeitung) + +```markdown +# EXTERNAL DEVELOPER ONBOARDING + +## Willkommen! 🎉 + +Du hast Task #456: "IMAP Login" übernommen? +Hier alles was du brauchst: + +### 1️⃣ SETUP (15 Min) +- [ ] Repository geklont +- [ ] Abhängigkeiten: `pip install -r requirements.txt` +- [ ] Tests: `pytest src/` → Alle grün? +- [ ] Local Run: `python main.py` + +### 2️⃣ CODE-KONTEXT (30 Min) +- Relevant Files: + * `src/imap/client.py` - IMAP Core + * `src/auth/login.py` - Login Flow + * `src/security/credentials.py` - Secure Speicherung + +- Design Docs: + * https://github.com/.../wiki/IMAP-Architecture + * https://github.com/.../docs/2fa-implementation.md + +- Video (5 Min): https://youtube.com/watch?v=... "IMAP Login Walkthrough" + +### 3️⃣ ANFORDERUNGEN CHECKLIST +- [ ] Support GMX & Web.de +- [ ] 2FA mit App-Passwort +- [ ] Error Handling klar +- [ ] Tests schreiben +- [ ] Code-Review bestehen + +### 4️⃣ QUESTIONS? +- Slack: @Georg (aufpassen, bin oft busy!) +- Email: georg.dahmen@proton.me +- GitHub Discussions: github.com/.../discussions +- TRY FIRST: Suche nach ähnlichen Issues + +### 5️⃣ WHEN DONE +- Push zu Branch: `feature/imap-login-2fa` +- Create Pull Request (schreibe gute Description!) +- Antworte auf Code-Review Kommentare + +--- + +## Success Path 🚀 + +Wenn alles läuft: +1. Du behältst **positives Feedback** für dein Profil +2. Wir können dich für **weitere Tasks** anfragen +3. Du wirst **Community Contributor** +4. Long-term: Vielleicht Team-Member? + +--- + +### Still Stuck? +- GitHub Issue erstellen: https://github.com/.../issues/new +- Tag @Georg in Discussions +- Wir helfen! 💪 +``` + +--- + +## 7. Developer Deadline Reminders (Automatisch) + +### Email Sequenz + +``` +DAY 0: Developer übernimmt Task +──────────────────────────── +Hallo Alice! 👋 + +Du hast gerade Task #456 übernommen: +"IMAP Login mit 2FA" + +Deadline: 28 Tage (4 Wochen) +Fällig: 2025-03-03 + +Viel Erfolg! 💪 + + +DAY 14: Erinnerung 1 +──────────────────── +Hallo Alice! + +⏰ ERINNERUNG: Task #456 läuft noch... + +Task: "IMAP Login mit 2FA" +Status: In Arbeit (seit 14 Tagen) +Deadline: 2025-03-03 (noch 14 Tage) + +💡 Falls du Hilfe brauchst: +- Slack @Georg +- GitHub Discussions + +Weiter so! 👍 + + +DAY 21: Erinnerung 2 +──────────────────── +Hallo Alice! + +⏰ WICHTIG: Task #456 läuft noch... + +Task: "IMAP Login mit 2FA" +Status: In Arbeit (seit 21 Tagen) +Deadline: 2025-03-03 (noch 7 Tage!) + +Du brauchst wahrscheinlich Hilfe? Sag Bescheid! + +Sonst wird die Task am 2025-03-03 freigegeben. + + +DAY 28: Task Deadline erreicht +──────────────────────────────── +Hallo Alice, + +⚠️ TASK DEADLINE ERREICHT! + +Task #456: "IMAP Login mit 2FA" +Status: IN ARBEIT → FREIGEGEBEN (Deadline überschritten) + +Die Task wird jetzt wieder für andere Developer verfügbar. + +Was ist passiert? +- Zu komplex? +- Andere Prioritäten? +- Blockiert? + +Schreib uns! Wir helfen. 💪 + +Falls du die Task weitermachen willst: +→ Schreib Comment in GitHub Issue +→ Oder übernehme Task erneut +``` + +--- + +## 8. Tägliche Mail (09:00 CET) - DEIN exaktes Format! + +### Template: Externe + Interne Tasks nach Prio sortiert + +``` +Betreff: Mail-Adler Daily Tasks - 2025-02-03 + +Hallo Team! 📨 + +═══════════════════════════════════════════════ + +📤 EXTERNE TASKS (Fertigstellungsdatum sortiert - früheste ZUERST!) + +#501 [Prio 5⭐⭐⭐⭐⭐] IMAP Login 2FA + Status: IN ARBEIT (Georg) + Fertig: 2025-02-05 (MORGEN!) 🔴 + ──────────────────────────── + +#450 [Prio 4⭐⭐⭐⭐] Kalender Integration + Status: OFFEN (Nächste Auto-Assign!) + Fertig: 2025-02-07 + ──────────────────────────── + +#499 [Prio 3⭐⭐⭐] Bug: Timeout bei Sync + Status: OFFEN + Fertig: 2025-02-10 + ──────────────────────────── + +═══════════════════════════════════════════════ + +📥 INTERNE TASKS (Nach Prio, dann Dringlichkeit) + +#512 [Prio 5⭐⭐⭐⭐⭐] Refactor IMAP Client + Status: OFFEN + Dringlichkeit: HOCH + ──────────────────────────── + +#445 [Prio 4⭐⭐⭐⭐] Unit Tests schreiben + Status: OFFEN + Dringlichkeit: MITTEL + ──────────────────────────── + +#200 [Prio 2⭐⭐] Dokumentation updaten + Status: OFFEN + Dringlichkeit: NIEDRIG + ──────────────────────────── + +═══════════════════════════════════════════════ + +🚫 SPAM-FILTER (neue Adressen seit gestern) + +Diese Adressen wurden in SPAM übernommen: +scammer@evil.com, +spambot@bulk.ru, +phishing@fake.de + +📌 WICHTIG: Diese werden bei Empfang DIREKT in dein Spam-Ordner +sortiert, damit nicht mehrere Leute sie bekommen! + +═══════════════════════════════════════════════ + +💬 REPLY ZU DIESER EMAIL - Du kannst: + • Neue Task: "NEW: [Title] [Prio 1-5] [Description]" + • Prio ändern: "PRIO #501 -> 3" (Prio 5 auf 3 senken) + • Task fertig: "DONE #501" + +Beispiele: +──────────────────────────────────────────────── +NEW: Database backup system Prio 4 Implement automated daily backups for PostgreSQL +PRIO #450 -> 5 +DONE #501 +──────────────────────────────────────────────── + +--- + +Automatisch gesendet täglich 09:00 CET +KEINE Zeitplanung - nur Prio! +Mail-Adler Task Management System +``` + +--- + +## 9. Task-History: Automatische Kontext-Anzeige + +### Problem +Wenn du eine Task öffnest, weißt du nicht ob es dazu schon frühere Diskussionen, Issues oder Commits gab. Das führt zu: +- Doppelter Arbeit +- Verlorener Kontext +- Unnötiger Suche + +### Lösung: Automatische History-Anzeige + +```python +# tools/task_history.py +class TaskHistory: + def get_related_context(self, task_title: str, task_description: str) -> dict: + """ + Finde automatisch relevante Historie zu einer Task + """ + keywords = self.extract_keywords(task_title + " " + task_description) + + results = { + "github_issues": [], + "github_commits": [], + "previous_tasks": [], + "amp_threads": [] + } + + # 1. GitHub Issues durchsuchen + for issue in self.github.search_issues(keywords): + results["github_issues"].append({ + "number": issue.number, + "title": issue.title, + "state": issue.state, + "url": issue.html_url, + "relevance": self.calculate_relevance(issue, keywords) + }) + + # 2. GitHub Commits durchsuchen + for commit in self.github.search_commits(keywords): + results["github_commits"].append({ + "sha": commit.sha[:7], + "message": commit.message, + "date": commit.date, + "url": commit.html_url, + "files": commit.files + }) + + # 3. Frühere Tasks durchsuchen + for task in self.db.search_tasks(keywords): + results["previous_tasks"].append({ + "id": task.id, + "title": task.title, + "status": task.status, + "notes": task.notes + }) + + # 4. Amp-Threads durchsuchen (falls vorhanden) + for thread in self.search_amp_threads(keywords): + results["amp_threads"].append({ + "id": thread.id, + "summary": thread.summary, + "date": thread.date + }) + + return results +``` + +### UI: History-Panel bei Task-Ansicht + +``` +┌────────────────────────────────────────────────────────┐ +│ Task #512: IMAP Login mit 2FA │ +├────────────────────────────────────────────────────────┤ +│ Status: OFFEN | Prio: 5 | Erstellt: 2025-02-01 │ +├────────────────────────────────────────────────────────┤ +│ │ +│ Beschreibung: │ +│ Implementiere 2FA Support für GMX und Telekom... │ +│ │ +├────────────────────────────────────────────────────────┤ +│ 📜 RELEVANTE HISTORIE (automatisch gefunden) │ +│ │ +│ GitHub Issues: │ +│ ├─ #234 "2FA Login funktioniert nicht" (closed) │ +│ │ └─ Lösung: App-Passwort statt normales PW │ +│ └─ #189 "GMX IMAP Authentifizierung" (closed) │ +│ └─ Enthält: Server-Einstellungen für GMX │ +│ │ +│ Commits: │ +│ ├─ a3f82d1 "Add IMAP auth handler" (2025-01-15) │ +│ └─ 9c4e2b7 "Fix GMX login timeout" (2025-01-20) │ +│ │ +│ Frühere Tasks: │ +│ └─ #340 "IMAP Core implementieren" (DONE) │ +│ └─ Basis für diese Task │ +│ │ +│ Amp-Threads: │ +│ └─ T-019c2360... "IMAP Implementation besprochen" │ +│ │ +│ [Alle anzeigen] [History ausblenden] │ +└────────────────────────────────────────────────────────┘ +``` + +### Implementierung: GitHub API + +```python +# tools/github_history.py +import requests + +class GitHubHistory: + def __init__(self, repo: str, token: str): + self.repo = repo # "georg0480/mailadler" + self.token = token + self.headers = {"Authorization": f"token {token}"} + + def search_issues(self, keywords: list, limit: int = 5) -> list: + """ + Suche GitHub Issues nach Keywords + """ + query = " ".join(keywords) + f" repo:{self.repo}" + url = f"https://api.github.com/search/issues?q={query}&per_page={limit}" + + response = requests.get(url, headers=self.headers) + return response.json().get("items", []) + + def search_commits(self, keywords: list, limit: int = 5) -> list: + """ + Suche Commits nach Keywords in Message + """ + # Commits API durchsuchen + url = f"https://api.github.com/repos/{self.repo}/commits" + response = requests.get(url, headers=self.headers) + + commits = response.json() + matched = [] + + for commit in commits: + message = commit["commit"]["message"].lower() + if any(kw.lower() in message for kw in keywords): + matched.append(commit) + if len(matched) >= limit: + break + + return matched +``` + +### Öffentlich für alle + +Die Task-History ist **für alle sichtbar** - nicht nur für den zugewiesenen Developer: +- Jeder kann den Kontext sehen +- Wissen wird geteilt +- Keine doppelte Arbeit + +--- + +## 10. Frustration-Reduktion: Was Fehlt Noch? + +### Häufige Probleme & Lösungen + +| Problem | Aktuell | Lösung | +|---------|---------|--------| +| **Task-Spam** | Keine | Max 1 gleichzeitig, Task-Liste täglich | +| **Verlorene Aufgaben** | Ja | Duplikat-Check, Suchbar | +| **Deadline-Überraschungen** | Ja | 3 Reminders (Tag 14, 21, 28) | +| **Externe Developer verloren** | Ja | Gute Onboarding + Video | +| **Keine Feedback** | Ja | Positives Feedback speichern | +| **Keine Priorisierer** | Ja | Developer können selbst priorisieren | +| **Zu viele offene Tasks** | Ja | Dringlichkeits-Sortierung | +| **Status unklar** | Ja | Tägliche Spam + Status in UI | +| **Dev hängt fest** | Ja | Erinnerungen + "Braucht Hilfe?" | +| **Viele kleine Aufgaben** | ? | Labels, Grouping, Filter | + +--- + +## 11. Implementation Plan + +### MVP (Must-Have) + +``` +Phase 1 (Woche 1): +├─ Task CRUD (Create, Read, Update, Delete) +├─ Status Tracker (Open, In Progress, Done) +├─ Developer Assignment (max 1 gleichzeitig) +└─ Duplikat-Checker + +Phase 2 (Woche 2): +├─ Deadline Reminders (Day 14, 21, 28) +├─ Priority Sorting (nach Dringlichkeit) +├─ Daily Status Email (09:00 CET) +└─ Developer Priorisierung + +Phase 3 (Woche 3): +├─ External Developer Onboarding +├─ Positive Feedback speichern +├─ Team-Abstimmung für gleiche Dringlichkeit +└─ GitHub Integration (Issue ↔ Task) +``` + +--- + +## 12. Zusammenfassung: Dein Task-Management System (PRAGMATISCH!) + +``` +✅ AUTOMATISCH (NO ZEITPLANUNG!): + • Duplikat-Prüfung vor Erstellung + • Tägliche Mail (09:00 CET) + • AUTO-ASSIGN nächste dringste Task + • Externe Tasks nach Fertigstellungsdatum sortiert + • Interne Tasks nach Prio sortiert + • Spam-Filter Auto-Übernehmen (verhindert Duplikate) + +✅ JEDER KANN MACHEN (via Daily Mail Reply): + • Neue Task erstellen: "NEW: [Title] Prio [1-5] [Description]" + • Prio ändern: "PRIO #501 -> 3" + • Task als fertig: "DONE #501" + • Nicht nur Developer! + +✅ DATENBANK STRUKTUR: + • Task: title, description, priority (1-5) + • Externe Tasks: fertigstellungsdatum + • Status: OFFEN, IN_ARBEIT, DONE + • Spam-Adressen: Auto-Übernehmen bei Empfang + +✅ FUNKTIONIERT PRAKTISCH: + • Keine theoretische Zeitplanung + • Einfache Prio-Nummern (1-5) + • Daily Mail zeigt STATUS klar + • Auto-Assign verhindert Vergessen + • Spam-Handling verhindert Duplikate + • Reply-Interface: SUPER einfach + +ERGEBNIS: +- Georg: Weiß täglich was kritisch ist +- Developer: Immer genau 1 Task +- Team: Keine Duplikate, keine Verwirrung +- Spam: Automatisch gefiltert, niemand wird doppelt belästigt +``` + +**Dein System ist PRAGMATISCH - es funktioniert im echten Leben!** ✅ diff --git a/README.md b/README.md index 4fa258c..ef84e13 100644 --- a/README.md +++ b/README.md @@ -1,85 +1,551 @@ -# mailadler - -[![build-shotcut-linux](https://github.com/mltframework/shotcut/workflows/build-shotcut-linux/badge.svg)](https://github.com/mltframework/shotcut/actions?query=workflow%3Abuild-shotcut-linux+is%3Acompleted+branch%3Amaster) -[![build-shotcut-macos](https://github.com/mltframework/shotcut/workflows/build-shotcut-macos/badge.svg)](https://github.com/mltframework/shotcut/actions?query=workflow%3Abuild-shotcut-macos+is%3Acompleted+branch%3Amaster) -[![build-shotcut-windows](https://github.com/mltframework/shotcut/workflows/build-shotcut-windows/badge.svg)](https://github.com/mltframework/shotcut/actions?query=workflow%3Abuild-shotcut-windows+is%3Acompleted+branch%3Amaster) - - -# Shotcut - a free, open source, cross-platform **video editor** +# Mail-Adler 🦅
-screenshot +Mail-Adler Logo + +**Ein moderner, datenschutzfreundlicher E-Mail-Client für Windows, Linux und macOS** + +*Entwickelt in Deutschland – mit Fokus auf Privatsphäre, Einfachheit und deutsche E-Mail-Provider* + +[Features](#-features) • [Warum Mail-Adler?](#-warum-mail-adler) • [Installation](#-installation) • [Build](#-build) • [Roadmap](#-roadmap) • [Mitwirken](#-mitwirken) + +---
-- Features: https://www.shotcut.org/features/ -- Roadmap: https://www.shotcut.org/roadmap/ +## 🎯 Was ist Mail-Adler? -## Install +**Mail-Adler** ist ein Open-Source E-Mail-Client, der speziell für Benutzer entwickelt wurde, die Wert auf **Datenschutz**, **Einfachheit** und **Kontrolle über ihre Daten** legen. -Binaries are regularly built and are available at https://www.shotcut.org/download/. +Im Gegensatz zu webbasierten E-Mail-Diensten oder großen kommerziellen Clients speichert Mail-Adler deine E-Mails **lokal auf deinem Computer** – verschlüsselt und unter deiner vollständigen Kontrolle. -## Contributors +### Das Problem mit bestehenden E-Mail-Clients -- Dan Dennedy <> : main author -- Brian Matherly <> : contributor +| Problem | Typische Clients | Mail-Adler | +|---------|------------------|------------| +| **Datenschutz** | Daten auf fremden Servern, Tracking | Lokale Speicherung, kein Tracking | +| **Deutsche Provider** | Oft schlechter Support für GMX, Web.de | Optimiert für deutsche Anbieter | +| **Komplexität** | Überladene Oberflächen, zu viele Funktionen | Fokussiert auf das Wesentliche | +| **Kosten** | Abo-Modelle, Premium-Funktionen | 100% kostenlos, Open Source | +| **Abhängigkeit** | Cloud-Zwang, Vendor Lock-in | Läuft komplett offline | -## Dependencies +### Für wen ist Mail-Adler? -Shotcut's direct (linked or hard runtime) dependencies are: +- 👨‍💼 **Privatanwender** die ihre E-Mails sicher verwalten möchten +- 🏢 **Kleine Unternehmen** die DSGVO-konform arbeiten müssen +- 🔒 **Datenschutz-bewusste Nutzer** die keine Cloud-Dienste wollen +- 🇩🇪 **Nutzer deutscher E-Mail-Provider** (GMX, Web.de, Telekom, Posteo) +- 💻 **Entwickler** die einen erweiterbaren, modernen Client suchen -- [MLT](https://www.mltframework.org/): multimedia authoring framework -- [Qt 6 (6.4 mininum)](https://www.qt.io/): application and UI framework -- [FFTW](https://fftw.org/) -- [FFmpeg](https://www.ffmpeg.org/): multimedia format and codec libraries -- [Frei0r](https://www.dyne.org/software/frei0r/): video plugins -- [SDL](http://www.libsdl.org/): cross-platform audio playback +--- -See https://shotcut.org/credits/ for a more complete list including indirect -and bundled dependencies. +## 🌟 Warum Mail-Adler? -## License - -GPLv3. See [COPYING](COPYING). - -## How to build - -**Warning**: building Shotcut should only be reserved to beta testers or contributors who know what they are doing. - -### Qt Creator - -The fastest way to build and try Shotcut development version is through [Qt Creator](https://www.qt.io/download#qt-creator). - -### From command line - -First, check dependencies are satisfied and various paths are correctly set to find different libraries and include files (Qt, MLT, frei0r and so forth). - -#### Configure - -In a new directory in which to make the build (separate from the source): +### 1. Datenschutz steht an erster Stelle ``` -cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ /path/to/shotcut +┌─────────────────────────────────────────────────────────┐ +│ Deine E-Mails │ +│ ├─ Gespeichert: Nur auf DEINEM Computer │ +│ ├─ Verschlüsselt: SQLite + SQLCipher (AES-256) │ +│ ├─ Backup: Eine Datei – du kontrollierst sie │ +│ └─ Telemetrie: Standardmäßig AUS (opt-in) │ +└─────────────────────────────────────────────────────────┘ ``` -We recommend using the Ninja generator by adding `-GNinja` to the above command line. +**Keine Cloud, kein Tracking, keine Werbung.** -#### Build +### 2. Optimiert für deutsche E-Mail-Provider + +Die meisten E-Mail-Clients sind für Gmail und Outlook optimiert. Mail-Adler wurde von Anfang an für die **beliebtesten deutschen Anbieter** entwickelt: + +| Provider | IMAP | SMTP | Kalender | Besonderheiten | +|----------|------|------|----------|----------------| +| **GMX** | ✅ | ✅ | ✅ iCal | Volle Integration | +| **Web.de** | ✅ | ✅ | ✅ iCal | Volle Integration | +| **Telekom** | ✅ | ✅ | ⏳ | T-Online Mail Support | +| **Posteo** | ✅ | ✅ | ✅ | Datenschutz-freundlich | +| **Gmail** | ⏳ | ⏳ | ⏳ | Später (Phase D) | + +### 3. Läuft überall – auch auf dem Raspberry Pi + +Mail-Adler ist ressourcenschonend und läuft auf: + +| Plattform | Status | +|-----------|--------| +| **Windows** (10/11) | ✅ Unterstützt | +| **Linux** (Ubuntu, Debian) | ✅ Unterstützt | +| **macOS** | ✅ Unterstützt | +| **Raspberry Pi** (ARM64) | ✅ Unterstützt | + +→ Ideal für einen **Mail-Server zu Hause** auf dem Pi! + +### 4. Einfach und übersichtlich + +Mail-Adler konzentriert sich auf das, was du wirklich brauchst: ``` -cmake --build . +┌─────────────────────────────────────────────────────────┐ +│ 📧 Eingang (12) │ Von: alice@gmx.de │ +│ ├─ 📂 Arbeit (5) │ Betreff: Projektbesprechung │ +│ ├─ 📂 Privat (3) │ ─────────────────────────────│ +│ ├─ 📂 Newsletter │ │ +│ └─ 🗑️ Papierkorb │ Hallo! │ +│ │ │ +│ [Gesendet] │ Anbei die Dokumente für │ +│ [Entwürfe] │ unser Meeting morgen... │ +│ [Archiv] │ │ +│ │ 📎 Dokumente.pdf (2.3 MB) │ +│ ────────────── │ 📎 Präsentation.pptx (5 MB) │ +│ 📅 Kalender │ │ +│ 📋 Aufgaben │ [Antworten] [Weiterleiten] │ +└─────────────────────────────────────────────────────────┘ ``` -#### Install +--- -If you do not install, Shotcut may fail when you run it because it cannot locate its QML -files that it reads at run-time. +## ✨ Features + +### 📧 E-Mail-Verwaltung + +| Feature | Beschreibung | +|---------|--------------| +| **Multi-Account** | Mehrere E-Mail-Konten in einer Oberfläche | +| **IMAP/SMTP** | Volle Unterstützung mit SSL/TLS-Verschlüsselung | +| **Ordner-Sync** | Automatische Synchronisation aller Ordner | +| **Ungelesen-Navigation** | Klick auf (12) → Springt zur ersten ungelesenen E-Mail | +| **Keyboard-Shortcuts** | `n` = Nächste ungelesen, `r` = Antworten, `d` = Löschen | +| **Verzögerter Versand** | E-Mails planen: "Sende morgen um 9:00" | +| **Serienbriefe** | CSV-Import für Massen-E-Mails mit Personalisierung | + +### 🔐 Sicherheit & Datenschutz + +| Feature | Beschreibung | +|---------|--------------| +| **Lokale Speicherung** | Alle Daten auf deinem Computer, nicht in der Cloud | +| **SQLite + SQLCipher** | Datenbank mit AES-256-Verschlüsselung | +| **Ende-zu-Ende-Verschlüsselung** | PSK-basierte E2EE für Gruppen-Kommunikation | +| **Verschlüsselte Anhänge** | Cloud-Upload mit Verschlüsselung (optional) | +| **DSGVO-konform** | Automatische Löschung nach Aufbewahrungsfristen | +| **Dezentrale Spam-Liste** | Keine zentrale Datensammlung | +| **Transparente Telemetrie** | Standardmäßig **aktiv** für bessere Fehleranalyse – jederzeit abschaltbar, offline = keine Daten | + +### 📎 Anhänge intelligent verwalten ``` +Anhänge (3): +├─ 📄 Vertrag.pdf (2.3 MB) [⬇️ Download] [👁️ Vorschau] +├─ 📊 Budget.xlsx (1.2 MB) [⬇️ Download] [👁️ Vorschau] +└─ 🖼️ Logo.png (845 KB) [⬇️ Download] [👁️ Vorschau] + +💡 Anhänge werden erst heruntergeladen, wenn du sie brauchst! + → Spart Speicherplatz und Bandbreite +``` + +**Lazy-Load:** Anhänge werden nur bei Klick heruntergeladen – nicht automatisch. Das spart Speicherplatz und beschleunigt die Synchronisation. + +### 🌍 Mehrsprachige E-Mails übersetzen + +Erhältst du E-Mails in fremden Sprachen? Mit einem Klick übersetzen: + +``` +┌─────────────────────────────────────────────────────────┐ +│ From: partner@company.fr │ +│ Subject: Proposition commerciale │ +│ ─────────────────────────────────────────────────────── │ +│ Bonjour, │ +│ Nous vous proposons une collaboration pour... │ +│ │ +│ [🌍 Übersetzen → Deutsch] │ +└─────────────────────────────────────────────────────────┘ + ↓ (1-2 Sekunden via DeepL) +┌─────────────────────────────────────────────────────────┐ +│ 🌍 ÜBERSETZUNG (Französisch → Deutsch) │ +│ ─────────────────────────────────────────────────────── │ +│ Guten Tag, │ +│ Wir schlagen Ihnen eine Zusammenarbeit vor für... │ +│ │ +│ [Original anzeigen] │ +└─────────────────────────────────────────────────────────┘ +``` + +- **On-Demand:** Nur wenn du klickst (keine automatische Übersetzung) +- **Caching:** Einmal übersetzt = gespeichert (spart API-Kosten) +- **DeepL-Integration:** Hochwertige Übersetzungen + +### 📅 Kalender-Integration (Phase C) + +Termine direkt in Mail-Adler verwalten – synchronisiert mit deinem GMX/Web.de Kalender: + +``` +┌─────────────────────────────────────────────────────────┐ +│ Februar 2025 [< Monat >] [Heute] │ +│ ─────────────────────────────────────────────────────── │ +│ Mo Di Mi Do Fr Sa So │ +│ 1 2 │ +│ 3 4 5 6 7 8 9 │ +│ ┌──────────────┐ │ +│ 10 │11 Meeting │ 12 13 14 15 16 │ +│ │ 14:00-15:00 │ │ +│ └──────────────┘ │ +│ 17 18 19 20 21 22 23 │ +│ 24 25 26 27 28 │ +└─────────────────────────────────────────────────────────┘ + +🔍 Terminfindung: "Wann haben Alice, Bob und Charlie Zeit?" + → System prüft Kalender aller Teilnehmer + → Zeigt freie Slots an + → Ein Klick zum Buchen + Einladungen senden +``` + +### 📋 Task-Management per E-Mail + +**Kein kompliziertes Issue-System** – alles läuft über E-Mail! + +#### So funktioniert es: + +1. **Täglich** bekommst du eine Daily Mail mit allen offenen Aufgaben (im Laufe des Tages – nicht alle gleichzeitig) +2. **Antworten = Aktion:** Einfach auf die Mail antworten um Aufgaben zu erstellen, Prio zu ändern oder als erledigt zu markieren +3. **Experten-Ansicht:** In Mail-Adler siehst du alle Mails von/zu deinem Team gefiltert + +``` +┌─────────────────────────────────────────────────────────┐ +│ 📧 DAILY MAIL – Mail-Adler Tasks – 04.02.2025 │ +│ ─────────────────────────────────────────────────────── │ +│ │ +│ 📤 EXTERNE AUFGABEN (nach Deadline sortiert): │ +│ │ +│ #501 [Prio 5⭐⭐⭐⭐⭐] IMAP Login 2FA │ +│ Status: IN ARBEIT (Georg) │ +│ Deadline: 05.02.2025 (MORGEN!) 🔴 │ +│ │ +│ #450 [Prio 4⭐⭐⭐⭐] Kalender Integration │ +│ Status: OFFEN │ +│ Deadline: 07.02.2025 │ +│ │ +│ ───────────────────────────────────────────────────────│ +│ 📥 INTERNE AUFGABEN (nach Priorität sortiert): │ +│ │ +│ #512 [Prio 5⭐⭐⭐⭐⭐] Refactor IMAP Client │ +│ Status: OFFEN │ +│ │ +│ #445 [Prio 3⭐⭐⭐] Unit Tests schreiben │ +│ Status: OFFEN │ +│ │ +│ ───────────────────────────────────────────────────────│ +│ 📜 HISTORIE zu deinen Aufgaben: │ +│ ├─ #501: GitHub Issue #234 "2FA Problem" (gelöst) │ +│ └─ #512: Commit a3f82d1 "Add IMAP auth" │ +│ │ +│ ───────────────────────────────────────────────────────│ +│ 💬 ANTWORTEN AUF DIESE MAIL: │ +│ │ +│ • Neue Aufgabe: NEW: [Titel] Prio [1-5] [Beschreibung] │ +│ • Prio ändern: PRIO #501 -> 3 │ +│ • Erledigt: DONE #501 │ +│ • Übernehmen: TAKE #512 │ +│ │ +└─────────────────────────────────────────────────────────┘ +``` + +#### Mustervorlage: So schreibst du gute Aufgaben + +Antworte auf die Daily Mail mit diesem Format: + +``` +NEW: IMAP Login mit 2FA implementieren Prio 5 + +WAS: +Two-Factor Authentication für GMX und Telekom hinzufügen. + +WARUM: +Benutzer mit 2FA können sich sonst nicht anmelden. + +ANFORDERUNGEN: +- [ ] GMX Support +- [ ] Telekom Support +- [ ] App-Passwort Eingabe +- [ ] Fehlermeldung bei falschen Daten + +FERTIG WENN: +- [ ] User mit 2FA kann sich anmelden +- [ ] Tests bestanden +``` + +**Kurzform** (wenn es schnell gehen muss): +``` +NEW: Button-Farbe ändern Prio 2 Der Speichern-Button soll blau statt grau sein. +``` + +#### Prioritäten-System (3 Stufen) + +| Prio | Farbe | Bedeutung | Beispiele | +|------|-------|-----------|-----------| +| 🟢 **1** | Grün | **Feature** – Neue Funktion | Neues Feature, Verbesserung, UI-Änderung | +| 🟠 **2** | Orange | **Fehler** – Bug beheben | Fehler der auftritt, falsches Verhalten | +| 🔴 **3** | Rot | **KRITISCH** – Sofort beheben! | Datenverlust, Crash, Sicherheitslücke | + +**Warum Bugs vor Features?** + +Wir priorisieren **Fehlerbehebung vor neuen Features**. Um Missbrauch zu verhindern (Feature als "Bug" melden): + +| Schutzmaßnahme | Wie es funktioniert | +|----------------|---------------------| +| **Fehler-ID vom Client** | Nur echte Crashes/Fehler generieren eine ID | +| **Automatische Klassifizierung** | System erkennt: Bug vs. Feature-Request | +| **Öffentliche Transparenz** | Jeder kann auf GitHub sehen ob es ein Bug oder Feature ist | +| **Community-Review** | Bei Unklarheit entscheidet die Community | + +#### Automatische Fehlerberichte per E-Mail + +Wenn Mail-Adler abstürzt oder ein schwerer Fehler auftritt, kann der Client automatisch einen Fehlerbericht per E-Mail senden: + +``` +┌─────────────────────────────────────────────────────────┐ +│ ⚠️ Mail-Adler ist auf ein Problem gestoßen │ +│ ─────────────────────────────────────────────────────── │ +│ │ +│ Was ist passiert? │ +│ Fehler beim Synchronisieren des Posteingangs │ +│ │ +│ Was hast du zuletzt gemacht? │ +│ ┌─────────────────────────────────────────────────────┐ │ +│ │ Ich habe auf "Alle synchronisieren" geklickt... │ │ +│ │ │ │ +│ └─────────────────────────────────────────────────────┘ │ +│ │ +│ Technische Details (wird automatisch gesendet): │ +│ • Fehler-ID: ERR-2025-0204-A3F8 (eindeutig vom Client) │ +│ • Version: 0.2.1 │ +│ • System: Windows 10 │ +│ • Zeitpunkt: 04.02.2025 14:32:15 │ +│ │ +│ [📧 Fehlerbericht senden] [Nicht senden] │ +└─────────────────────────────────────────────────────────┘ +``` + +**Warum per E-Mail statt HTTP?** + +| Aspekt | HTTP-Reporting | E-Mail-Reporting | +|--------|----------------|------------------| +| **Funktioniert wenn** | Server erreichbar | Client kann noch E-Mail senden | +| **Datenschutz** | Daten an unsere Server | Geht über dein E-Mail-Konto | +| **Eindeutigkeit** | Server generiert ID | Client generiert Fehler-ID | +| **Duplikate** | Möglich | Fehler-ID verhindert doppelte Meldungen | +| **User-Kontext** | Oft vergessen | User wird direkt gefragt | +| **Transparenz** | Issue-ID versteckt | **Fehler-ID = GitHub Issue ID** (öffentlich nachverfolgbar) | + +→ Wenn der Client noch eine E-Mail senden kann, funktioniert das Reporting! +→ Die Fehler-ID aus dem Client ist **dieselbe** wie im GitHub Issue – du kannst den Status öffentlich verfolgen! + +#### Was macht das System besonders? + +| Feature | Beschreibung | +|---------|--------------| +| **Kein Login nötig** | Alles per E-Mail – du brauchst keine Website | +| **Prio automatisch** | System ordnet Schweregrad zu (1-5) | +| **Jeder kann Prio ändern** | Ist dir etwas wichtig? → `PRIO #123 -> 5` | +| **Auto-Historie** | Das System zeigt automatisch, was es zum Thema schon gab | +| **Experten-Ansicht** | Filter in Mail-Adler: Zeige nur Team-Kommunikation | +| **Auto-Assign** | Task erledigt? → Nächste wird automatisch zugewiesen | +| **Fehlerberichte per Mail** | Client sendet Fehler direkt per E-Mail | +| **Duplikat-Warnung** | Fehler-ID + Ähnlichkeits-Check verhindern Duplikate | + +--- + +## 📥 Installation + +### Windows + +```bash +# Coming soon: Installer +# mailadler-setup.exe +``` + +### Linux (Ubuntu/Debian) + +```bash +# Coming soon +sudo apt install mailadler +``` + +### macOS + +```bash +# Coming soon +brew install mailadler +``` + +**Aktuell:** Mail-Adler befindet sich in aktiver Entwicklung (Phase B). Für frühen Zugang: [Build from Source](#-build) + +--- + +## 🔧 Build + +### Voraussetzungen + +| Komponente | Version | Hinweis | +|------------|---------|---------| +| **Qt** | 6.4+ | Core, Widgets, Network, Sql | +| **CMake** | 3.16+ | Build-System | +| **C++ Compiler** | C++17 | GCC 9+, Clang 10+, MSVC 2019+ | +| **OpenSSL** | 1.1+ | Für IMAP/SMTP SSL-Verschlüsselung | + +### Build-Anleitung + +```bash +# 1. Repository klonen +git clone https://github.com/georg0480/mailadler.git +cd mailadler + +# 2. Build-Verzeichnis erstellen +mkdir build && cd build + +# 3. CMake konfigurieren +cmake -DCMAKE_BUILD_TYPE=Release .. + +# 4. Kompilieren (parallel für Geschwindigkeit) +cmake --build . --parallel + +# 5. (Optional) Installieren cmake --install . ``` -## Translation +### Mit Qt Creator (empfohlen für Entwickler) -If you want to translate Shotcut to another language, please use [Transifex](https://explore.transifex.com/ddennedy/shotcut/). +1. Qt Creator öffnen +2. `File` → `Open File or Project` +3. `CMakeLists.txt` im Projektverzeichnis auswählen +4. Build-Kit auswählen (Qt 6.4+) +5. ▶️ Build & Run + +--- + +## 🗺️ Roadmap + +Mail-Adler wird in Phasen entwickelt: + +| Phase | Status | Was wird gebaut? | +|-------|--------|------------------| +| **A** | ✅ Fertig | Grundgerüst, UI-Framework, Projektstruktur | +| **B** | 🔄 Aktuell | IMAP/SMTP, Sicherheit, Multi-Provider-Support | +| **C** | ⏳ Geplant | Kalender (iCal), E-Mail-Übersetzung (DeepL) | +| **D** | ⏳ Später | Google-Integration, OpenPGP, erweiterte Features | + +### Phase B – Was passiert gerade? + +``` +✅ IMAP Sync (GMX, Web.de, Telekom) +✅ SMTP Versand +✅ Ende-zu-Ende-Verschlüsselung +✅ Dezentrale Spam-Liste +✅ Mehrsprachige UI (Deutsch, Englisch) +🔄 Multi-Account Support +🔄 Lazy-Load Anhänge +⏳ Aufbewahrungsfristen (Auto-Löschung) +``` + +Detaillierte Roadmap: [FINAL_ROADMAP.md](FINAL_ROADMAP.md) + +--- + +## 🤝 Mitwirken + +Wir freuen uns über jeden Beitrag – ob Code, Dokumentation, Übersetzung oder Feedback! + +### Entwicklung + +```bash +# 1. Fork erstellen (GitHub) + +# 2. Lokal klonen +git clone https://github.com/DEIN-USERNAME/mailadler.git + +# 3. Branch für dein Feature anlegen +git checkout -b feature/mein-feature + +# 4. Änderungen machen und testen + +# 5. Committen +git commit -m "Add: Beschreibung meines Features" + +# 6. Push und Pull Request erstellen +git push origin feature/mein-feature +``` + +### Übersetzen + +Übersetzungen werden mit einfachen CSV/TXT-Dateien verwaltet – kein kompliziertes System nötig! + +``` +translations/ +├─ glossary_en.txt # Englisch +├─ glossary_fr.txt # Französisch +├─ glossary_es.txt # Spanisch +└─ ... +``` + +Format ist simpel: +``` +Eingang = Inbox +Gesendet = Sent +Entwürfe = Drafts +``` + +Details: [EINFACHE_UEBERSETZUNG.md](EINFACHE_UEBERSETZUNG.md) + +### Bugs melden & Features vorschlagen + +- 🐛 **Bug gefunden?** → [Issue erstellen](https://github.com/georg0480/mailadler/issues/new) +- 💡 **Idee für Feature?** → [Discussion starten](https://github.com/georg0480/mailadler/discussions) + +--- + +## 📄 Lizenz + +Mail-Adler ist **100% Open Source** und lizenziert unter der **GNU General Public License v3.0**. + +Das bedeutet: +- ✅ Kostenlos nutzen (privat und kommerziell) +- ✅ Code anschauen und ändern +- ✅ Weitergeben und verteilen +- ⚠️ Änderungen müssen auch Open Source sein (Copyleft) + +Vollständiger Lizenztext: [COPYING](COPYING) + +--- + +## 📚 Dokumentation + +| Dokument | Beschreibung | +|----------|--------------| +| [FINAL_ROADMAP.md](FINAL_ROADMAP.md) | Detaillierte Entwicklungs-Roadmap | +| [ERWEITERTE_FEATURES.md](ERWEITERTE_FEATURES.md) | Geplante Features (Datenbank, Anhänge, etc.) | +| [PROJEKT_MANAGEMENT_SYSTEM.md](PROJEKT_MANAGEMENT_SYSTEM.md) | Task-Management Dokumentation | +| [EINFACHE_UEBERSETZUNG.md](EINFACHE_UEBERSETZUNG.md) | Übersetzungs-Workflow | +| [SICHERHEIT_VERSCHLUESSELUNG.md](SICHERHEIT_VERSCHLUESSELUNG.md) | Sicherheits-Konzepte | +| [CONTRIBUTING.md](CONTRIBUTING.md) | Wie du beitragen kannst | + +--- + +## 👥 Team + +- **Georg** – Hauptentwickler & Projektleitung + +--- + +## 📞 Kontakt & Community + +- **GitHub Issues:** [Bug melden / Feature anfragen](https://github.com/georg0480/mailadler/issues) +- **GitHub Discussions:** [Fragen, Ideen, Community](https://github.com/georg0480/mailadler/discussions) + +--- + +
+ +**Made with ❤️ in Germany** + +*Mail-Adler – Deine E-Mails, deine Daten, deine Kontrolle.* + +
diff --git a/SICHERHEIT_VERSCHLUESSELUNG.md b/SICHERHEIT_VERSCHLUESSELUNG.md new file mode 100644 index 0000000..1d92e5a --- /dev/null +++ b/SICHERHEIT_VERSCHLUESSELUNG.md @@ -0,0 +1,630 @@ +# Sicherheit & Verschlüsselung - Mail-Adler + +## 1. End-to-End Verschlüsselung (E2EE) + +### 1.1 Unterstützte Standards + +Mail-Adler wird folgende E2EE-Standards unterstützen: + +| Standard | Beschreibung | Unterstützung | Status | +|----------|-------------|---------------|--------| +| **OpenPGP (RFC 4880)** | Public-Key Verschlüsselung | ✅ Voll | Phase C | +| **S/MIME (RFC 5751)** | Certificate-based | ✅ Geplant | Phase D | +| **Pre-shared Key (PSK)** | Manuelle Schlüsselverwaltung | ✅ Phase B | Beta | + +### 1.2 Pre-Shared Key (PSK) - Phase B + +Für Phase B wird ein einfaches PSK-System implementiert: + +#### Szenario: Gruppe mit gemeinsamer Verschlüsselung + +**Beteiligung:** Alice, Bob, Charlie + +**Workflow:** + +1. **Schlüssel-Generierung** +```cpp +// src/encryption/KeyGenerator.h/cpp +class KeyGenerator { +public: + // Generiert sicheren zufälligen Schlüssel + static QString generateGroupKey(int lengthBytes = 32); // 256-bit + + // Beispiel: "K9mX2pL7vQ4bJ8fN3gW5hR1sT6cD9jE2uP8vM4nO7qA" +}; +``` + +**Schlüssel-Format:** Base64, 44 Zeichen (256-bit) + +2. **Schlüssel-Verteilung** + - Nicht per Email! Nur out-of-band (Telefon, Signal, Persönlich) + - In lokaler Datei speichern: `~/.config/mail-adler/group_keys.json` + +```json +{ + "group_keys": [ + { + "group_id": "uuid-1234", + "group_name": "Firmenteam A", + "members": ["alice@gmx.de", "bob@web.de", "charlie@gmail.com"], + "key": "K9mX2pL7vQ4bJ8fN3gW5hR1sT6cD9jE2uP8vM4nO7qA", + "key_expiry": "2026-02-03T00:00:00Z", + "created_at": "2025-02-03T12:00:00Z" + } + ] +} +``` + +3. **Verschlüsselte Email versenden** + +``` +Empfänger: bob@web.de, charlie@gmail.com +Betreff: [ENCRYPTED] Vertrauliche Mitteilung + +──────────────────────────────────────── +BEGIN ENCRYPTED MESSAGE +──────────────────────────────────────── +AES-256-GCM ENCRYPTED CONTENT +ENC_DATA_LENGTH: 2048 +NONCE: 16 bytes +AUTHENTICATION_TAG: 16 bytes +──────────────────────────────────────── +END ENCRYPTED MESSAGE +──────────────────────────────────────── +``` + +4. **Verschlüsselung & Entschlüsselung** + +```cpp +// src/encryption/E2EEncryption.h/cpp +class E2EEncryption { +public: + // Verschlüsseln + static QByteArray encrypt( + const QString &plaintext, + const QString &groupKey + ); // Returns: Encrypted data with nonce + tag + + // Entschlüsseln + static QString decrypt( + const QByteArray &ciphertext, + const QString &groupKey + ); // Returns: Plaintext + + // Algorithmus: AES-256-GCM (AUTHENTICATED ENCRYPTION) + // - Confidentiality: AES-256 + // - Integrity: Galois/Counter Mode (GCM) +}; +``` + +**Algorithmus-Details:** +- **Verschlüsselung:** AES-256 in GCM-Modus +- **Key Derivation:** PBKDF2-SHA256 (optional, für Passwort-basierte Keys) +- **Nonce:** Zufällig, 12 Bytes (GCM-Standard) +- **Authentication Tag:** 16 Bytes + +### 1.3 Voraussetzungen für Gruppe + +**Alle Gruppenmitglieder MÜSSEN** den PSK haben. + +Wenn ein Mitglied keinen Schlüssel hat: +``` +⚠️ Verschlüsselung nicht möglich + +charlie@gmail.com hat keinen Schlüssel für +"Firmenteam A". + +Optionen: +[Nur an bob@web.de senden] +[Zu verschlüsselter Gruppe hinzufügen] +[Unverschlüsselt senden] +``` + +### 1.4 Cloud-Anhänge mit Verschlüsselung + +Statt große Dateien zu verschlüsseln und zu versenden: + +#### Workflow: +1. **Lokal hochladen & Verschlüsseln** + - User klickt "Anhang hinzufügen" (10MB-Datei) + - Datei wird mit Gruppen-PSK verschlüsselt + - Zu Cloud-Storage hochgeladen (z.B. lokaler Server) + +2. **Sichere Passwort-Generierung** +```cpp +// src/encryption/PasswordGenerator.h/cpp +class PasswordGenerator { +public: + // Generiert sicheres Passwort für Datei-Download + static QString generateDownloadPassword(int length = 15); + // Beispiel: "K9mX2pL7vQ4bJ8f" + + // Zeichen-Set: Groß- + Kleinbuchstaben + Zahlen (kein Sonderzeichen) + // Warum? Um Copy-Paste zu vereinfachen, keine Shell-Escape-Probleme +}; +``` + +3. **Email versenden** +``` +Betreff: Dokument: Vertrag.pdf (verschlüsselt) + +Hallo Bob, + +anbei das angeforderte Dokument. Es wurde +mit unserem Gruppen-Schlüssel verschlüsselt +und auf dem Server hochgeladen. + +Datei-Link: https://files.mail-adler.local/d/abc123def456 +Größe: 10.2 MB +Download-Passwort: K9mX2pL7vQ4bJ8f + +⚠️ WICHTIG: Passwort nicht weitergeben! +Speichern Sie es sicher! + +Datei verfällt in: 30 Tagen + +[Link anklicken zum Herunterladen] +``` + +4. **Download & Automatische Entschlüsselung** + - Click auf Link → Browser öffnet Download-Dialog + - Client verlangt Passwort → Verifiziert auf Server + - Datei wird heruntergeladen & mit PSK entschlüsselt + - Lokal gespeichert unter `~/Downloads/Vertrag.pdf` + +--- + +## 2. Gmail/Outlook Spezialbehandlung + +### 2.1 Google Mail - Keine native E2EE + +**Problem:** Google unterstützt **kein OpenPGP/S-MIME nativ** über IMAP. + +**Lösung:** Kontakt-Austausch Workflow + +``` +Benutzer: Alice (alice@gmail.com) +Gruppe: Firmenteam A (mit PSK) +Ziel: Mit Google-Konten verschlüsselt kommunizieren + +Workflow: +1. Compose → Gruppe: "Firmenteam A + Google-Nutzer" +2. System erkennt: google@gmail.com hat keinen PSK +3. Dialog erscheint: + + ┌──────────────────────────────────────┐ + │ Google-Konto erkannt │ + ├──────────────────────────────────────┤ + │ │ + │ google@gmail.com hat keinen Zugang │ + │ zu verschlüsseltem Gruppen-Content. │ + │ │ + │ Alternativen: │ + │ ☐ Kontaktdaten abfragen │ + │ → Email senden: "Bitte antwort │ + │ mit alternativer Email wenn │ + │ Sie Verschlüsselung möchten" │ + │ │ + │ ☐ Unverschlüsselt senden │ + │ │ + │ [Kontakt anfordern] [Senden] │ + └──────────────────────────────────────┘ + +4. Wenn "Kontakt anfordern" → Automatische Email: + + An: google@gmail.com + Betreff: Verschlüsselte Kommunikation + + Hallo, + + die Gruppe "Firmenteam A" verwendet + verschlüsselte Email-Kommunikation mit + AES-256 Verschlüsselung. + + Falls Sie teilnehmen möchten, antworten Sie + bitte mit einer alternativen Email-Adresse + (z.B. ProtonMail, Posteo) die E2EE + unterstützt. + + Alternativ können wir auch mit Ihrer Google- + Adresse kommunizieren (unverschlüsselt). + + Viele Grüße, + Alice (via Mail-Adler) + +5. Google-Nutzer antwortet: + "Ja, verwenden Sie: charlie@protonmail.com" + +6. System aktualisiert Gruppe: + └─ charlie@gmail.com → charlie@protonmail.com (für verschlüsselte Mails) +``` + +### 2.2 Outlook/Hotmail - S/MIME Support + +Microsoft Outlook unterstützt S/MIME nativ über IMAP. + +**Phase D:** S/MIME-Integration + +```cpp +// src/encryption/SMIMEHandler.h/cpp +class SMIMEHandler { +public: + // S/MIME Zertifikat verwalten + void importCertificate(const QString &certPath); + void exportCertificate(const QString &destPath); + + // Signieren & Verschlüsseln + QByteArray signAndEncrypt( + const QString &message, + const QStringList &recipientCerts + ); +}; +``` + +--- + +## 3. Spam-Schutz mit Verschlüsselung + +### 3.1 Problem: SPF/DKIM/DMARC funktioniert nicht mit E2EE + +**Unverschlüsselte Email:** ISP/Mail-Provider prüft automatisch: +- **SPF:** Absender-IP autorisiert? +- **DKIM:** Digitale Signatur korrekt? +- **DMARC:** SPF/DKIM Policy erfüllt? + +**Verschlüsselte Email:** Header sind verschlüsselt → Spam-Filter können nicht prüfen. + +### 3.2 Lösung: Client-seitige Validierung + +Mail-Adler implementiert zusätzliche Checks: + +```cpp +// src/security/SpamDetector.h/cpp +class SpamDetector { +public: + enum SpamLevel { + NOT_SPAM = 0, + SUSPICIOUS = 1, + LIKELY_SPAM = 2, + DEFINITE_SPAM = 3 + }; + + SpamLevel analyzeEmail( + const MailMessage &msg, + const MailAccount &account + ) const; +}; +``` + +**Prüfregeln:** + +| Regel | Beschreibung | Aktion | +|-------|-------------|--------| +| **SMTP-Match** | SMTP From ≠ Message From | ⚠️ Warnung | +| **SPF-Fail** | SPF-Record nicht erfüllt | ⚠️ Warnung | +| **DKIM-Fail** | DKIM-Signatur ungültig | ⚠️ Warnung | +| **Spam-Liste** | In tägl. Spam-Liste | 🚫 Blockieren | +| **User-Blocked** | Nutzer hat blockiert | 🚫 Blockieren | +| **Known-Phishing** | Bekannte Phishing-Domain | 🚫 Blockieren | + +### 3.3 Spam-Einstufung + +``` +E-Mail von: spammer@evil.com +SMTP-From: evil-server@attacker.net + +┌─────────────────────────────┐ +│ 🚨 VERDÄCHTIG │ +├─────────────────────────────┤ +│ │ +│ ⚠️ SPF-Check fehlgeschlagen │ +│ Domain: evil.com │ +│ │ +│ ⚠️ DKIM-Signatur ungültig │ +│ │ +│ ⚠️ SMTP-From ≠ From-Header │ +│ evil-server@attacker.net │ +│ ≠ spammer@evil.com │ +│ │ +│ [Als Spam markieren] │ +│ [Spam-Filter anpassen] │ +└─────────────────────────────┘ +``` + +### 3.4 Täglich Spam-List Upload + +**Jeden Tag um 9:00 Uhr:** + +```cpp +// src/sync/SpamListService.h/cpp +class SpamListService { +public: + // Sammle lokale Spam-Markierungen + void uploadLocalSpamList(); + + // 10:00 Uhr: Download aktualisierte Liste + void downloadSpamListUpdate(); +}; +``` + +**Upload Schema:** + +```json +{ + "user_id_hash": "sha256(user-uuid)", + "timestamp": "2025-02-03T09:00:00Z", + "entries": [ + { + "email_hash": "sha256(spammer@evil.com)", + "domain_hash": "sha256(evil.com)", + "type": "PHISHING", + "marked_at": "2025-02-02T14:30:00Z" + }, + { + "email_hash": "sha256(bulk@spam.ru)", + "type": "BULK_MAIL", + "marked_at": "2025-02-02T10:15:00Z" + } + ] +} +``` + +--- + +## 4. Sichere Speicherung von Anmeldedaten + +### 4.1 Betriebssystem-spezifische Speicher + +#### Windows +```cpp +// src/account/CredentialStorage.h/cpp (Windows) +class WindowsCredentialStorage { +private: + // Nutzt Windows Credential Manager mit DPAPI + // Verschlüsselung: Automatisch mit Windows-Benutzer-Key + +public: + void storePassword(const QString &account, const QString &password); + QString retrievePassword(const QString &account); +}; + +// Speicherort: Windows Credential Manager +// Sicherheit: Systemweit verschlüsselt +// Zugriff: Nur über autorisierten Prozess +``` + +#### Linux +```cpp +// src/account/CredentialStorage.h/cpp (Linux) +class LinuxCredentialStorage { +private: + // Nutzt freedesktop.org Secret Service (DBus) + // Fallback: Encrypted file (~/.config/mail-adler/secrets.enc) + +public: + void storePassword(const QString &account, const QString &password); + QString retrievePassword(const QString &account); +}; + +// Speicherort: Secret Service / ~/.config/mail-adler/secrets.enc +// Verschlüsselung: AES-256 mit Master-Key +// Master-Key: Abgeleitet von System-UUID + User-UID (PBKDF2) +``` + +#### macOS +```cpp +// src/account/CredentialStorage.h/cpp (macOS) +class MacOSCredentialStorage { +private: + // Nutzt Keychain + +public: + void storePassword(const QString &account, const QString &password); + QString retrievePassword(const QString &account); +}; + +// Speicherort: macOS Keychain +// Sicherheit: Systemweit verschlüsselt +// Zugriff: Benutzer muss genehmigen (beim Abruf) +``` + +### 4.2 OAuth2 Token Management + +```cpp +class OAuth2Manager { +public: + // Tokens sicher speichern + void storeAccessToken( + const QString &account, + const QString &accessToken, + const QString &refreshToken, + qint64 expiresInSeconds + ); + + // Automatische Erneuerung + bool refreshAccessTokenIfNeeded(const QString &account); +}; +``` + +--- + +## 5. Transport Security + +### 5.1 TLS/SSL Anforderungen + +**IMAP:** +- Minimum: **TLS 1.2** +- Bevorzugt: **TLS 1.3** +- STARTTLS oder SSL/TLS auf Port 993 + +**SMTP:** +- Minimum: **TLS 1.2** +- Bevorzugt: **TLS 1.3** +- Submission Port: 587 (mit STARTTLS) +- Secure Port: 465 (Implicit TLS) + +### 5.2 Certificate Validation + +```cpp +// src/network/SSLValidator.h/cpp +class SSLValidator { +public: + bool validateServerCertificate( + const QSslCertificate &serverCert, + const QString &hostname + ); + +private: + // Prüfe: + // 1. CN/SAN matches hostname + // 2. Cert gültig (nicht abgelaufen) + // 3. Signiert von bekannter CA + // 4. Certificate Pinning (optional) +}; +``` + +### 5.3 Certificate Pinning (Optional) + +Für unternehmenseigene Server: + +```json +{ + "pinned_certificates": [ + { + "hostname": "imap.company.com", + "pin": "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "backup_pin": "sha256/BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=" + } + ] +} +``` + +--- + +## 6. Datenspeicherung-Sicherheit + +### 6.1 SQLite Datenbank Verschlüsselung + +**Phase B:** Verschlüsselte Datenbank mit SQLCipher + +```cpp +// src/database/Database.h/cpp +class Database { +private: + sqlite3 *db; + QString masterKey; + +public: + bool openEncrypted(const QString &path, const QString &password); + // Nutzt: SQLCipher mit AES-256 + + // Master-Key wird abgeleitet von: + // PBKDF2-SHA256(password, salt=app_id, iterations=4096) +}; +``` + +### 6.2 Temp-Datei Sicherheit + +```cpp +// src/util/SecureFile.h/cpp +class SecureFile { +public: + // Erstelle Temp-Datei mit sicheren Rechten + static QString createSecureTempFile( + const QString &prefix, // z.B. "mail-adler-" + const QString &suffix // z.B. ".eml" + ); + // Datei-Permissions: 0600 (Owner read/write only) + + // Sichere Löschung (mit Überschreibung) + static void secureDelete(const QString &filePath); + // Überschreibe mit Zufallsdaten vor Löschen +}; +``` + +--- + +## 7. Phase-Übersicht + +### Phase B (Aktuell) +- ✅ PSK-basierte Verschlüsselung +- ✅ AES-256-GCM +- ✅ Cloud-Anhänge mit Passwort +- ✅ Spam-Detektion +- ✅ Sichere Passwort-Speicherung + +### Phase C (Nächste) +- ⏳ OpenPGP/GPG Integration +- ⏳ Public-Key Exchange +- ⏳ Key-Revocation + +### Phase D +- ⏳ S/MIME Support +- ⏳ X.509 Certificate Management +- ⏳ Outlook Integration + +### Phase E+ +- ⏳ Forward Secrecy +- ⏳ Perfect Forward Secrecy (PFS) +- ⏳ Decentralized Key Server + +--- + +## 8. Best Practices für Benutzer + +### 8.1 Sichere Grup pen-Verwaltung + +1. **Schlüssel NICHT per Email versenden** + - Nur out-of-band (Telefon, Signal, persönlich) + +2. **Regelmäßig Schlüssel rotieren** + - Alle 6-12 Monate neuen Schlüssel generieren + - Alte Schlüssel archivieren + +3. **Sicherung des Master-Keys** + - Exportieren & offline sichern + - Passwort-geschützt speichern + +### 8.2 Passwort-Sicherheit + +1. **Starke Passwörter für Cloud-Dateien** + - Auto-generierte Passwörter verwenden (15+ Zeichen) + - Nicht speichern oder weitergeben + +2. **Zwei-Faktor-Authentifizierung** + - Falls möglich, aktivieren (Gmail, Outlook, etc.) + +### 8.3 Spam-Reporting + +1. **Konsistent markieren** + - Wenn Phishing → IMMER markieren + - Hilft anderen Nutzern + +2. **Verdächtige Emails prüfen** + - Expert-Modus: Spam-Details ansehen + - SMTP-Mismatch = großes Warnsignal + +--- + +## 9. Häufig gestellte Fragen + +**F: Was ist PSK?** +A: Pre-Shared Key - Ein gemeinsamer geheimer Schlüssel, den alle Gruppenmitglieder haben. + +**F: Ist AES-256 sicher?** +A: Ja. AES-256 ist von US-Regierung für TOP SECRET klassifiziert. + +**F: Kann ich OpenPGP nutzen?** +A: Phase C wird OpenPGP unterstützen. Phase B nutzt PSK. + +**F: Was ist mit Google-Mails?** +A: Google unterstützt kein E2EE über IMAP. Wir fragen nach alternativer Email. + +**F: Ist Datei-Passwort sicher?** +A: Ja. Passwort wird auf Client generiert, Server speichert nur gehashed. + +**F: Wer hat Zugriff auf meine Schlüssel?** +A: Niemand. Schlüssel werden lokal mit Betriebssystem-Verschlüsselung gespeichert. + +**F: Was wenn ich den PSK vergesse?** +A: Schlüssel muss erneut verteilt werden. Alte Nachrichten können nicht entschlüsselt werden. diff --git a/TELEMETRIE_FEHLERBERICHTERSTATTUNG.md b/TELEMETRIE_FEHLERBERICHTERSTATTUNG.md new file mode 100644 index 0000000..b203d89 --- /dev/null +++ b/TELEMETRIE_FEHLERBERICHTERSTATTUNG.md @@ -0,0 +1,579 @@ +# Telemetrie & Fehlerberichterstattung System + +## Übersicht +Mail-Adler wird ein optionales Fehlerberichterstattungs- und Telemetrie-System mit vollständiger Benutzerkontrolle implementieren. + +## 1. Datenschutz & Benutzer-Einwilligung + +### Installation & Onboarding +Bei der **ersten Anwendung** wird der Benutzer gefragt: + +``` +┌─────────────────────────────────────────────────┐ +│ Mail-Adler Willkommen │ +├─────────────────────────────────────────────────┤ +│ │ +│ Fehlerberichterstattung helfen, Mail-Adler │ +│ zu verbessern. Ihre Privatsphäre ist │ +│ wichtig: Keine persönlichen Daten werden │ +│ ohne Ihre Zustimmung übertragen. │ +│ │ +│ ☐ Automatische Fehlerberichterstattung │ +│ (Betriebssystem, Fehlertyp, Stack-Trace) │ +│ │ +│ ☐ Anonyme Nutzungsstatistiken │ +│ (Feature-Nutzung, Sync-Erfolgsrate) │ +│ │ +│ [Ja, Standard aktiviert] [Nein, später] │ +└─────────────────────────────────────────────────┘ +``` + +**Standardverhalten:** Aktiviert (Benutzer wird informiert) + +**Speicherort:** `~/.config/mail-adler/telemetry_consent.json` +```json +{ + "version": 1, + "timestamp": "2025-02-03T12:00:00Z", + "error_reporting": true, + "usage_statistics": false, + "last_asked": "2025-02-03T12:00:00Z" +} +``` + +### Wiederholung +Alle 90 Tage wird der Benutzer erneut gefragt, ob die Einwilligung noch aktuell ist. + +--- + +## 2. Fehlerberichterstattungs-Architektur + +### 2.1 Fehlererfassung + +#### Automatische Erfassung +```cpp +// src/telemetry/ErrorReporter.h/cpp +class ErrorReporter { +public: + static void reportError( + const QString &errorType, // z.B. "ImapConnectionFailed" + const QString &message, // Fehlermeldung + const QString &stackTrace, // Stack-Trace + const QMap &context // Zusätzlicher Kontext + ); + + static void reportException(const std::exception &e); + static void reportWarning(const QString &warning); +}; +``` + +#### Fehlertypen +| Fehler-ID | Beschreibung | Beispiel | +|-----------|-------------|---------| +| `IMAP_CONNECTION_FAILED` | IMAP-Verbindungsfehler | Timeout, SSL-Fehler | +| `SMTP_SEND_FAILED` | SMTP-Versandfehler | Auth-Fehler, Relay-Fehler | +| `DATABASE_ERROR` | SQLite-Fehler | Schema-Migration, Locking | +| `SYNC_FAILED` | Sync-Fehler | Netzwerkfehler, Konflikt | +| `CRASH` | Anwendungs-Crash | Segfault, Assertion | +| `UI_ERROR` | UI-Rendering-Fehler | Widget-Initialisierung | + +### 2.2 Fehler-Kontext + +Jeder Fehler enthält: + +```json +{ + "error_id": "unique-uuid-v4", + "error_type": "IMAP_CONNECTION_FAILED", + "message": "Connection timeout after 30s", + "timestamp": "2025-02-03T12:34:56.789Z", + "severity": "ERROR", + + "system": { + "os": "Windows 11 (Build 22621)", + "os_version": "11.0.22621", + "architecture": "x86_64", + "cpu_cores": 8, + "memory_mb": 16384, + "qt_version": "6.4.2" + }, + + "application": { + "version": "0.1.0-beta", + "build_hash": "abc1234567", + "uptime_seconds": 3600, + "session_duration_seconds": 1800 + }, + + "account_info": { + "account_id": "hash(account-uuid)", // Anonymisiert + "provider": "gmail", // "gmail", "gmx", "web.de", "telekom", etc. + "last_sync_minutes_ago": 15 + }, + + "stack_trace": "...", + "additional_context": { + "operation": "ImapSync.incrementalFetch", + "retry_count": 2, + "network_available": true + }, + + "hash": "sha256(message+stacktrace)" // Zur Deduplizierung +} +``` + +### 2.3 Fehler-Deduplizierung + +Wenn derselbe Fehler erneut auftritt: + +```cpp +// Fehler wird NICHT erneut gesendet, sondern lokal gezählt +// Nach dem 1. Bericht: Zähler++ (lokal gespeichert) +// Nach 10 Vorkommen: Bericht mit occurrence_count: 10 + +// Speicherung in: ~/.config/mail-adler/error_cache.json +{ + "sha256_hash_of_error": { + "first_occurrence": "2025-02-03T12:00:00Z", + "occurrence_count": 5, + "last_reported": "2025-02-03T13:00:00Z" + } +} +``` + +### 2.4 Fehler-Upload + +**Trigger-Punkte:** +1. Unmittelbar nach kritischem Fehler (mit User-Bestätigung) +2. Täglich um 8:00 Uhr (gesammelt) +3. Beim Beenden der Anwendung +4. Nach WiFi/Netzwerk-Wiederherstellung + +**Upload-Ziel:** +``` +POST https://mail-adler-telemetry.example.com/api/v1/errors +Authorization: Bearer +Content-Type: application/json + +[ + { error_json_1 }, + { error_json_2 }, + ... +] +``` + +**Fehlerbehandlung beim Upload:** +- Lokal gecacht, wenn Netzwerk nicht verfügbar +- Max. 1000 Fehler gecacht (älteste werden verworfen) +- Keine Blockierung der UI während Upload + +--- + +## 3. Nutzungsstatistiken + +### 3.1 Sammlung (nur wenn aktiviert) + +```json +{ + "session_id": "uuid-v4", + "timestamp": "2025-02-03T12:00:00Z", + "application": { + "version": "0.1.0-beta" + }, + + "usage": { + "feature_usage": { + "imap_sync_count": 5, + "smtp_send_count": 2, + "read_messages_count": 50, + "compose_messages_count": 3 + }, + + "sync_statistics": { + "successful_syncs": 98, + "failed_syncs": 2, + "average_sync_duration_seconds": 12.5, + "total_messages_synced": 1250 + }, + + "ui_interactions": { + "features_used": ["MailList", "MailView", "Compose"], + "session_duration_seconds": 3600 + } + }, + + "system": { + "os": "Windows 11", + "architecture": "x86_64" + } +} +``` + +**Upload:** Täglich um 8:00 Uhr (zusammen mit Fehlern) + +--- + +## 4. Expert-Modus + +### 4.1 Aktivierung + +**Menü:** `Einstellungen → Expertenoptionen → Expert-Modus aktivieren` + +```cpp +// src/telemetry/ExpertMode.h/cpp +class ExpertMode { +public: + bool isEnabled() const; + void setEnabled(bool enabled); + + // Zeige Telemetrie-Daten an + void showSentErrorReports(); // Fehler, die zu uns gesendet wurden + void showReceivedUpdates(); // Updates, die von uns kamen + void showTelemetryLog(); // Vollständiges Telemetrie-Log +}; +``` + +### 4.2 Expert-Modus UI + +#### Fenster: "Telemetrie-Inspektor" + +``` +┌──────────────────────────────────────────────────────┐ +│ Telemetrie-Inspektor [X] │ +├──────────────────────────────────────────────────────┤ +│ │ +│ 📤 Zu uns gesendete Fehler │ +│ ├─ 2025-02-03 12:34 | IMAP_CONNECTION_FAILED │ +│ ├─ 2025-02-03 11:20 | SYNC_FAILED (5x) │ +│ └─ 2025-02-02 15:45 | SMTP_SEND_FAILED │ +│ │ +│ 📥 Von uns empfangene Meldungen │ +│ ├─ 2025-02-03 08:00 | Spam-Liste aktualisiert │ +│ ├─ 2025-02-02 08:00 | Feature-Ankündigung │ +│ └─ 2025-02-01 10:30 | Sicherheitsupdate │ +│ │ +│ [Details ansehen] [Export als JSON] │ +└──────────────────────────────────────────────────────┘ +``` + +#### Details-Ansicht (Fehler) +```json +{ + "error_id": "uuid-1234", + "type": "IMAP_CONNECTION_FAILED", + "timestamp": "2025-02-03T12:34:56Z", + "status": "SENT", + "sent_at": "2025-02-03T13:00:00Z", + "message": "Connection timeout after 30s", + "stack_trace": "..." +} +``` + +--- + +## 5. Fehlerbehandlung mit Benutzer-Dialog + +### 5.1 Kritischer Fehler + +Wenn ein kritischer Fehler auftritt: + +``` +┌─────────────────────────────────────────────────┐ +│ Ein Fehler ist aufgetreten │ +├─────────────────────────────────────────────────┤ +│ │ +│ Ein unerwarteter Fehler hat die Anwendung │ +│ beeinträchtigt. Helfen Sie, Mail-Adler zu │ +│ verbessern, indem Sie diesen Fehler │ +│ berichten. │ +│ │ +│ Fehlernummer: ERR-20250203-001 │ +│ │ +│ Was haben Sie zuvor getan? │ +│ [______________________________] │ +│ │ +│ ☑ Fehler automatisch berichten │ +│ │ +│ [Bericht senden] [Verwerfen] │ +└─────────────────────────────────────────────────┘ +``` + +### 5.2 Fehler-Tracking + +Nach Fehler wird gespeichert: +```json +{ + "error_number": "ERR-20250203-001", + "type": "IMAP_CONNECTION_FAILED", + "timestamp": "2025-02-03T12:34:56Z", + "user_description": "Ich habe auf 'Synchronisieren' geklickt", + "was_reported": true, + "reported_at": "2025-02-03T12:35:00Z" +} +``` + +Wenn **derselbe Fehler erneut auftritt**: +- Lokale Fehler-ID erhöhen (ERR-20250203-002) +- Benutzer wird erneut gefragt +- Bericht mit Details über vorherige Fehlerberichte senden + +--- + +## 6. Spam-Liste Service + +### 6.1 Zentrale Spam-Datenbank + +Täglich um 9:00 Uhr: +- Alle Benutzer melden lokale Spam-Markierungen +- Zentrale Datenbank aggregiert und dedupliziert +- Um 10:00 Uhr: Clients fragen aktualisierte Spam-Liste ab + +### 6.2 Spam-Liste Schema + +```json +{ + "timestamp": "2025-02-03T09:00:00Z", + "version": "20250203-0900", + "entries": [ + { + "email_hash": "sha256(spam@example.com)", + "type": "PHISHING", + "severity": 1.0, + "reported_count": 157, + "last_seen": "2025-02-03T08:45:00Z" + }, + { + "email_hash": "sha256(spam2@example.com)", + "type": "BULK", + "severity": 0.7, + "reported_count": 43, + "last_seen": "2025-02-03T07:30:00Z" + } + ] +} +``` + +### 6.3 Spam-Klassifikation + +| Typ | Beschreibung | Aktion | +|-----|-------------|--------| +| `PHISHING` | Phishing/Social Engineering | Block alle | +| `MALWARE` | Malware-Quellen | Block alle | +| `SPAM_BULK` | Massenmails | Block für alle | +| `BLOCKED_BY_USER` | Einzelne Personen blockiert | Nur eigene Blockierung | + +--- + +## 7. Tägliche Fehler-Zusammenfassung + +### 7.1 Fehler-Zusammenfassung Email + +**Täglich um 9:00 Uhr** sendet zentraler Service eine Email an `georg.dahmen@proton.me`: + +``` +Betreff: Mail-Adler Fehler-Zusammenfassung - 2025-02-03 + +───────────────────────────────────────────────────── + +Gestrige Fehler (2025-02-02): + +Kritische Fehler (2): + • IMAP_CONNECTION_FAILED (5 Benutzer, 12 Vorkommen) + → Mögliche Ursache: TLS-Upgrade auf Gmail-Konten + → Link: https://mail-adler-telemetry.example.com/errors/IMAP_CONNECTION_FAILED + + • DATABASE_ERROR (1 Benutzer, 3 Vorkommen) + → Mögliche Ursache: Schema-Migration fehlgeschlagen + → Link: https://mail-adler-telemetry.example.com/errors/DATABASE_ERROR + +Warnungen (8): + • SYNC_FAILED (18 Benutzer) + • UI_ERROR (4 Benutzer) + ... + +Spam-Report: + • 242 neue Spam-Quellen gemeldet + • Top 5: phishing@attacker1.com, spam@bulkmail2.ru, ... + +Nutzungsstatistiken: + • Aktive Benutzer: 1,250 + • Durchschn. Sync-Erfolgsrate: 98.3% + • Durchschn. Session-Dauer: 35 Minuten + +───────────────────────────────────────────────────── +Vollständiger Bericht: https://mail-adler-telemetry.example.com/reports/2025-02-02 +``` + +--- + +## 8. Client-Update Mechanismus + +### 8.1 Update-Check + +**Täglich um 8:00 Uhr** fragt Client ab: +``` +GET /api/v1/updates?version=0.1.0-beta&os=windows&arch=x86_64 +``` + +**Antwort:** +```json +{ + "current_version": "0.1.0-beta", + "latest_version": "0.2.0", + "update_available": true, + "critical": false, + "download_url": "https://...", + "release_notes": "...", + "checksum": "sha256=..." +} +``` + +### 8.2 Update-Dialog + +Wenn Update verfügbar: +``` +┌─────────────────────────────────────────────────┐ +│ Update verfügbar: Mail-Adler 0.2.0 │ +├─────────────────────────────────────────────────┤ +│ │ +│ Neue Features: │ +│ • Multi-Account Unterstützung │ +│ • Verbesserte Verschlüsselung │ +│ • 5 Bugfixes │ +│ │ +│ Größe: 45 MB │ +│ │ +│ [Jetzt aktualisieren] [Später] │ +└─────────────────────────────────────────────────┘ +``` + +--- + +## 9. Datenspeicherung (Server-Seite) + +### 9.1 Fehler-Datenbank + +```sql +CREATE TABLE telemetry_errors ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + error_id TEXT UNIQUE NOT NULL, + error_type TEXT NOT NULL, + message TEXT, + severity TEXT, + + system_os TEXT, + system_arch TEXT, + app_version TEXT, + + account_provider TEXT, -- "gmail", "gmx", "web.de", etc. + + stack_trace TEXT, + hash TEXT UNIQUE, -- Für Deduplizierung + + timestamp DATETIME, + occurrence_count INTEGER DEFAULT 1, + + INDEX idx_error_type (error_type), + INDEX idx_timestamp (timestamp), + INDEX idx_hash (hash) +); +``` + +### 9.2 Aufbewahrungsrichtlinie + +- **Detaillierte Fehler:** 90 Tage +- **Aggregierte Statistiken:** 1 Jahr +- **Spam-Liste:** Permanent (mit Deduplizierung) + +--- + +## 10. Sicherheit & Datenschutz + +### 10.1 Verschlüsselung + +- Alle Übertragungen: **HTTPS/TLS 1.3** +- Passwörter/Tokens: **Keine** im Telemetrie-Daten +- Stack-Traces: Redaktioniert, um Dateipfade zu verbergen + +### 10.2 Anonymisierung + +- Account-ID: **gehashed** (SHA256) +- Benutzernamen: **nicht erfasst** +- IP-Adressen: **nicht gespeichert** +- Email-Adressen: Nur gehashed (für Spam-Liste) + +### 10.3 Benutzerkontrolle + +```cpp +// src/telemetry/TelemetrySettings.h +class TelemetrySettings { +public: + bool errorReportingEnabled() const; + void setErrorReportingEnabled(bool enabled); + + bool usageStatisticsEnabled() const; + void setUsageStatisticsEnabled(bool enabled); + + // Daten exportieren + void exportAllTelemetryData(const QString &filePath); + + // Daten löschen + void deleteAllLocalTelemetryData(); + void deleteOldTelemetryData(int daysOld); +}; +``` + +--- + +## 11. Implementierungs-Roadmap + +### Phase 1: Fehlerberichterstattungs-Kern +- [ ] ErrorReporter Klasse +- [ ] Error-JSON Schema +- [ ] Fehler-Deduplication +- [ ] Lokale Caching-Logik + +### Phase 2: Server-Infrastruktur +- [ ] Telemetry-API Server aufsetzen +- [ ] Fehler-Datenbank +- [ ] Spam-Liste Service +- [ ] Update-Check Endpoint + +### Phase 3: Client-Integration +- [ ] Fehler-Dialog UI +- [ ] Expert-Modus +- [ ] Onboarding-Consent Dialog +- [ ] Tägliche Synchronisierung + +### Phase 4: Monitoring & Analyse +- [ ] Dashboard für Entwickler +- [ ] Fehler-Trends Analyse +- [ ] Spam-Statistiken +- [ ] Tägliche Summary-Emails + +--- + +## 12. Kontakt & Support + +**Fehlerberichterstattung:** georg.dahmen@proton.me +**Sicherheitsbedenken:** security@mail-adler.dev +**Datenschutz:** privacy@mail-adler.dev + +--- + +## 13. FAQ + +**F: Werden meine Passwörter übertragen?** +A: Nein. Passwörter und API-Tokens werden niemals in Fehlerberichten erfasst. + +**F: Kann ich Telemetrie deaktivieren?** +A: Ja. Einstellungen → Datenschutz → Telemetrie-Optionen. + +**F: Wie lange werden Fehler gespeichert?** +A: 90 Tage detaillierte Fehler, dann aggregierte Statistiken für 1 Jahr. + +**F: Sind meine Daten exportierbar?** +A: Ja. Einstellungen → Datenschutz → "Alle Telemetrie-Daten exportieren". + +**F: Kann ich einen Fehler manuell löschen?** +A: Ja. Expert-Modus → Telemetrie-Inspektor → Fehler auswählen → Löschen. diff --git a/TESTING_PLAN.md b/TESTING_PLAN.md new file mode 100644 index 0000000..c34f1c4 --- /dev/null +++ b/TESTING_PLAN.md @@ -0,0 +1,560 @@ +# Mail-Adler Testing Plan + +## 1. Lokalisierung - Deutsch + +### 1.1 Ordner-Namen (Standard IMAP) + +Mail-Adler zeigt deutsche Namen für Standard-Ordner: + +| IMAP-Name | Mail-Adler Anzeige (Deutsch) | +|-----------|-------------------------------| +| `INBOX` | **Eingang** | +| `Sent` / `[Gmail]/Sent Mail` | **Gesendet** | +| `Drafts` / `[Gmail]/Drafts` | **Entwürfe** | +| `Trash` / `[Gmail]/Bin` | **Papierkorb** | +| `Spam` / `[Gmail]/Spam` | **Spam** | +| `Archive` / `[Gmail]/All Mail` | **Archiv** | +| `Flagged` | **Markiert** | + +```cpp +// src/models/MailFolder.h/cpp +class MailFolder { +private: + QString getLocalizedName(const QString &imapName) const { + static QMap localization = { + {"INBOX", "Eingang"}, + {"Sent", "Gesendet"}, + {"Drafts", "Entwürfe"}, + {"Trash", "Papierkorb"}, + {"Spam", "Spam"}, + {"Archive", "Archiv"}, + {"Flagged", "Markiert"} + }; + return localization.value(imapName, imapName); + } +}; +``` + +### 1.2 UI-Lokalisierung (Qt Translations) + +```cpp +// src/ui/MainWindow.cpp +tr("Eingang") // INBOX +tr("Gesendet") // Sent +tr("Entwürfe") // Drafts +tr("Papierkorb") // Trash +tr("Spam") // Spam +tr("Archiv") // Archive +tr("Markiert") // Flagged +tr("Synchronisieren") // Sync +tr("Neue Nachricht") // New Message +tr("Antworten") // Reply +``` + +--- + +## 2. Test-Plan: Deutsche Mail-Anbieter + +### 2.1 Test-Konten Vorbereitung + +**Verfügbare Test-Konten:** + +| Provider | Email | Status | +|----------|-------|--------| +| GMX | `georg.dahmen@gmx.de` | ✅ Verfügbar | +| Web.de | `georg.dahmen.test@web.de` | ✅ Verfügbar | +| Telekom | `georg.dahmen.gd@googlemail.com` | ✅ Verfügbar | + +### 2.2 Test-Matrix + +``` +┌─────────────────┬─────────────────┬──────────────┬──────────────┐ +│ Funktion │ GMX │ Web.de │ Telekom/GM │ +├─────────────────┼─────────────────┼──────────────┼──────────────┤ +│ Verbindung │ imap.gmx.net:993│ imap.web.de │ imap.gmail.c │ +│ IMAP │ ✅ IMAP4rev1 │ ✅ IMAP4rev1 │ ✅ IMAP4rev1 │ +│ SMTP │ mail.gmx.net:587│ mail.web.de │ smtp.gmail.c │ +│ TLS/SSL │ ✅ 1.3 │ ✅ 1.3 │ ✅ 1.3 │ +│ OAuth2 │ ❌ Nicht │ ❌ Nicht │ ✅ Google │ +│ STARTTLS │ ✅ 587 │ ✅ 587 │ ✅ 587 │ +│ 2FA Support │ ✅ │ ✅ │ ✅ │ +└─────────────────┴─────────────────┴──────────────┴──────────────┘ +``` + +### 2.3 Phase B Test-Szenarien + +#### Test 1: Verbindung & Authentifizierung + +**GMX:** +``` +1. Öffne Account-Setup Dialog +2. Email: georg.dahmen@gmx.de +3. Passwort: [Test-Passwort] +4. Server-Auto-Detect: imap.gmx.net:993 +5. Ergebnis: ✅ Verbindung erfolgreich +``` + +**Web.de:** +``` +1. Email: georg.dahmen.test@web.de +2. Passwort: [f6r8Z9uZAq83IMztmiyc] +3. Server-Auto-Detect: imap.web.de:993 +4. Ergebnis: ✅ Verbindung erfolgreich +``` + +**Telekom/Google:** +``` +1. Email: georg.dahmen.gd@googlemail.com +2. Passwort: [b*yZXxjd6CdwQAb6] +3. Oder OAuth2: https://accounts.login.idm.telekom.com/oauth2/auth +4. Ergebnis: ✅ Verbindung erfolgreich +``` + +#### Test 2: Ordner-Abruf + +``` +Erwartete Ordner (GMX): +✅ Eingang (INBOX) +✅ Gesendet (Sent) +✅ Entwürfe (Drafts) +✅ Papierkorb (Trash) +✅ Spam +✅ Archiv (Archive) +✅ Verschiedenes (Misc) + +(Web.de & Telekom ähnlich) +``` + +#### Test 3: Email-Sync + +``` +1. Öffne Eingang +2. Klick "Synchronisieren" +3. Ergebnis: ✅ Alle Nachrichten abgerufen + - Header angezeigt + - Absender korrekt + - Betreffzeilen angezeigt + - Datum angezeigt +``` + +#### Test 4: Email lesen + +``` +1. Klick auf erste Email +2. Ergebnis: ✅ Vollständiger Text angezeigt + - Formatierung korrekt + - HTML-Mails korrekt (Falls vorhanden) + - Anhänge angezeigt +``` + +#### Test 5: Email versenden + +``` +GMX-Konto test: +1. Neue Nachricht +2. An: [Ihre andere Email] +3. Betreff: Test Mail-Adler +4. Text: "Dies ist eine Test-Email von Mail-Adler" +5. Senden +6. Ergebnis: ✅ Email in "Gesendet" Ordner + +Verification: +- Email im Gesendet-Ordner sichtbar +- Zeitstempel korrekt +- Text korrekt empfangen +``` + +#### Test 6: Email löschen + +``` +1. Öffne Email +2. Klick Löschen +3. Ergebnis: ✅ Email im Papierkorb +4. Verifizierung: + - Papierkorb Ordner zeigt Email + - Eingang zeigt Email nicht mehr +``` + +#### Test 7: Email wiederherstellen + +``` +1. Öffne Papierkorb +2. Rechts-Klick auf gelöschte Email +3. "Wiederherstellen" +4. Ergebnis: ✅ Email zurück in Eingang +``` + +#### Test 8: Spam-Markierung + +``` +1. Öffne Email +2. Klick "Als Spam markieren" +3. Ergebnis: ✅ Email im Spam-Ordner +4. Lokal: Email in lokale Spam-Datenbank eingetragen +5. Täglich 9:00 Uhr: Zu zentralem Service hochgeladen +``` + +--- + +## 3. Cross-Platform Testing + +### 3.1 Windows 11 Testing + +**Getestet von:** Georg Dahmen (Dein System) + +``` +OS: Windows 11 (Build 22621) +Architektur: x86_64 +RAM: 16 GB +Qt: 6.4.2 + +Test-Szenarien: +✅ App-Start +✅ Account-Setup +✅ IMAP-Sync (3 Provider) +✅ Email-Versand +✅ Lokale Persistierung +``` + +### 3.2 Linux Testing (geplant) + +``` +Distribution: Ubuntu 22.04 LTS (oder Debian) +Architektur: x86_64 +Qt: 6.4.2+ + +Test-Szenarien: +- [ ] App-Start +- [ ] Account-Setup (GMX, Web.de) +- [ ] Keyring-Integration (Secret Service) +- [ ] Desktop-Integration +``` + +### 3.3 macOS Testing (geplant) + +``` +OS: macOS 13+ +Architektur: x86_64 + ARM64 +Qt: 6.4.2+ + +Test-Szenarien: +- [ ] App-Start +- [ ] Account-Setup +- [ ] Keychain-Integration +- [ ] Notarization & Signing +``` + +--- + +## 4. ARM64 Support - Raspberry Pi 5 + +### 4.1 Raspberry Pi 5 Architektur + +**Spezifikationen:** +``` +Prozessor: ARM Cortex-A76 (64-bit) +Architektur: ARMv8 / ARM64 +RAM: 4GB / 8GB +CPU-Kerne: 4 @ 2.4 GHz +GPU: Broadcom VideoCore VII + +Kompatibilität: ✅ Vollständig kompatibel mit Mail-Adler +Vergleich zu macOS ARM: Ähnlich, aber weniger Power +``` + +### 4.2 Build-Prozess für ARM64 + +```bash +# CMake-Konfiguration für ARM64 +cd build-arm64 +cmake .. \ + -DCMAKE_TOOLCHAIN_FILE=../cmake/arm64-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -GNinja + +# Für Raspberry Pi: +cmake .. \ + -DCMAKE_SYSTEM_NAME=Linux \ + -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ + -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \ + -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \ + -GNinja + +ninja +ninja install +``` + +### 4.3 Raspberry Pi OS Installation + +**Vorbereitung:** +```bash +# Raspberry Pi OS Lite 64-bit +# Download: https://www.raspberrypi.com/software/ + +# SSH aktivieren +touch /boot/ssh + +# Qt6 & Dependencies installieren +sudo apt update +sudo apt install -y \ + qt6-base-dev \ + qt6-sql-plugins \ + libsqlite3-dev \ + libssl-dev \ + libsasl2-dev \ + cmake \ + ninja-build \ + build-essential + +# Mail-Adler compilieren & installieren +git clone https://github.com/georg0480/mail-adler.git +cd mail-adler +mkdir build && cd build +cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release +ninja +sudo ninja install +``` + +### 4.4 Performance-Erwartungen + +| Operation | Ergebnis | +|-----------|----------| +| App-Start | ~3-5 Sekunden | +| Account-Setup | ~2-3 Sekunden | +| IMAP-Sync (10 Emails) | ~2-4 Sekunden | +| Email-Render (HTML) | ~1 Sekunde | +| Gesamtspeicher | ~80-150 MB (mit Qt6) | + +### 4.5 Testing auf Pi 5 + +**Minimales Test-Setup:** + +``` +Hardware: +- Raspberry Pi 5 (8GB) +- SD-Karte (64GB+) +- Ethernet-Kabel (oder WiFi) + +Software: +- Raspberry Pi OS 64-bit Lite +- Qt6 +- Mail-Adler Build + +Tests: +1. [ ] App startet +2. [ ] GMX-Account konfigurierbar +3. [ ] Sync funktioniert +4. [ ] Email lesbar +5. [ ] Email versendbar +6. [ ] CPU-Last akzeptabel +7. [ ] RAM-Nutzung ok +``` + +--- + +## 5. macOS ARM64 Support + +### 5.1 Apple Silicon Kompatibilität + +**Modelle:** +- ✅ M1 / M1 Pro / M1 Max +- ✅ M2 / M2 Pro / M2 Max +- ✅ M3 / M3 Pro / M3 Max +- ✅ M4 (zukünftig) + +**Vergleich:** +| Kriterium | Pi 5 | macOS M1 | +|-----------|------|----------| +| CPU Kerne | 4 @ 2.4 GHz | 8 (4P+4E) @ 3.2 GHz | +| RAM | 4-8 GB | 8-32 GB | +| Performance | Niedrig | Sehr hoch | +| Ideal für | Heimserver | Desktop/Laptop | + +### 5.2 ARM64 Build für macOS + +```bash +# M1/M2/M3 Build +arch -arm64 brew install qt6 +mkdir build-arm64-mac && cd build-arm64-mac + +cmake .. \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -GNinja \ + -DCMAKE_BUILD_TYPE=Release + +ninja +# Codesign & Notarize für App Store +codesign -s - build/Mail-Adler.app +``` + +--- + +## 6. Windows ARM64 Support (Zukunft) + +Microsoft bietet auch Windows on ARM an (z.B. Copilot+ PCs). + +``` +Zukunft: Phase D+ +- [ ] Windows ARM64 Build +- [ ] Testing auf ARM64 Windows +- [ ] Offizieller Release +``` + +--- + +## 7. Test-Automation + +### 7.1 Unit Tests (Qt Test Framework) + +```cpp +// tests/imap_client_test.h +#include + +class ImapClientTest : public QObject { + Q_OBJECT + +private slots: + void testGMXConnection(); + void testWebDeConnection(); + void testTelekomConnection(); + void testEmailSync(); + void testEmailSend(); +}; + +// Beispiel: +void ImapClientTest::testGMXConnection() { + ImapClient client; + bool connected = client.connect( + "imap.gmx.net", 993, + "georg.dahmen@gmx.de", + "password" + ); + QVERIFY(connected); +} +``` + +### 7.2 Integration Tests + +```cpp +// tests/e2e_tests.h +class E2ETest : public QObject { + Q_OBJECT + +private slots: + void testFullWorkflow_GMX(); + void testFullWorkflow_WebDe(); + void testFullWorkflow_Telekom(); +}; + +void E2ETest::testFullWorkflow_GMX() { + // 1. App starten + // 2. Account hinzufügen + // 3. Sync + // 4. Email lesen + // 5. Email versenden + // 6. Verifikation +} +``` + +--- + +## 8. Test-Checkliste Phase B + +### Phase B Completion Checklist + +``` +Lokalisierung: +- [x] Ordner-Namen Deutsch +- [x] UI-Text Deutsch +- [ ] Error-Messages Deutsch +- [ ] Tooltips Deutsch + +GMX Testing (Windows 11): +- [ ] Verbindung erfolgreich +- [ ] Ordner abrufbar +- [ ] Emails synchronisierbar +- [ ] Emails lesbar +- [ ] Emails versendbar +- [ ] Löschen funktioniert +- [ ] Spam-Markierung funktioniert + +Web.de Testing (Windows 11): +- [ ] Verbindung erfolgreich +- [ ] Ordner abrufbar +- [ ] Emails synchronisierbar +- [ ] Emails lesbar +- [ ] Emails versendbar +- [ ] 2FA funktioniert + +Telekom/Google Testing (Windows 11): +- [ ] Verbindung erfolgreich +- [ ] OAuth2 funktioniert +- [ ] Ordner abrufbar +- [ ] Emails synchronisierbar +- [ ] Emails lesbar +- [ ] Emails versendbar + +Linux Testing (geplant): +- [ ] Compilation erfolgreich +- [ ] App startet +- [ ] Account-Setup funktioniert +- [ ] Keyring-Integration ok + +macOS Testing (geplant): +- [ ] Compilation erfolgreich (x86_64 + ARM64) +- [ ] App startet +- [ ] Keychain-Integration ok + +ARM64 Testing (Zukunft): +- [ ] Pi 5 Build funktioniert +- [ ] App startet auf Pi 5 +- [ ] Basis-Funktionalität ok +- [ ] Performance akzeptabel + +Sicherheit: +- [ ] Passwörter verschlüsselt gespeichert +- [ ] TLS 1.3 verwendet +- [ ] Keine Passwörter in Logs +- [ ] Telemetrie optional +``` + +--- + +## 9. Release-Roadmap + +### Phase B (aktuell) - März 2025 +- Single-Account IMAP/SMTP +- Deutsch-lokalisiert +- Windows 11 Testing +- GMX, Web.de, Telekom Support + +### Phase B+ - April 2025 +- Multi-Account Support +- Linux Build verfügbar +- macOS Build verfügbar + +### Phase C - Mai 2025 +- OpenPGP/E2EE Support +- ARM64 Testing (Pi 5, M1/M2) +- Beta-Release + +### Phase D - Juni 2025 +- S/MIME Support +- Stable Release v1.0 + +--- + +## 10. Feedback & Bug-Reporting + +**Für Testing-Ergebnisse:** +- Email: georg.dahmen@proton.me +- Format: Betriebssystem, Reproduktionsschritte, Fehler-Details +- Screenshot/Log anhängen wenn möglich + +**Test-Daten speichern:** +``` +~/.config/mail-adler/test-logs/ +├─ gmx_sync_20250203.log +├─ web_send_20250203.log +└─ telekom_oauth_20250203.log +``` diff --git a/UEBERSETZUNGS_OPTIONEN.md b/UEBERSETZUNGS_OPTIONEN.md new file mode 100644 index 0000000..b8eb572 --- /dev/null +++ b/UEBERSETZUNGS_OPTIONEN.md @@ -0,0 +1,487 @@ +# Übersetzungsoptionen - Günstig & Praktisch + +## 1. Übersetzungs-Anbieter (Vergleich) + +| Anbieter | Kostenlos | Qualität | API | Limit | Empfehlung | +|----------|-----------|----------|-----|-------|------------| +| **Google Translate Free** | ✅ Kostenlos | ✅✅ Gut | ❌ Unofficial | Unbegrenzt | ✅ Einmalig | +| **DeepL Free** | ✅ 500K chars/Monat | ✅✅✅ Sehr gut | ✅ Kostenlos | 500K | ✅ BESTE Qualität | +| **Microsoft Translator** | ⚠️ 2M chars/Monat | ✅✅ Gut | ✅ Kostenlos | 2M | ✅ Viel Freiheit | +| **Yandex** | ✅ Kostenlos | ✅ Gut | ✅ Free | Unbegrenzt | ✅ Backup | +| **OpenAI GPT-4** | ❌ $0.03 pro 1K Tokens | ✅✅✅ Excellent | ✅ API | Pay-as-you-go | ⚠️ Teuer | +| **AWS Translate** | ❌ $15 pro 1M chars | ✅✅ Gut | ✅ API | Pay-as-you-go | ⚠️ Teuer | +| **Ollama lokal** | ✅ Kostenlos | ✅ Gut | ✅ Lokal | Unbegrenzt | ✅ Datenschutz | + +--- + +## 2. EMPFEHLUNG: DeepL Free + +### Warum DeepL? +``` +✅ Kostenlos (500K characters/Monat) +✅ BESTE Übersetzungsqualität (besser als Google) +✅ Kostenlose API verfügbar +✅ 70 Wörter × 30 Sprachen = ~2100 chars = KOSTENLOS! +✅ Unbegrenztes Kontingent mit Free-Tier +``` + +### Beispiel: 70 Wörter × 30 Sprachen +``` +70 Wörter durchschnittlich 6 Buchstaben = 420 Zeichen +× 30 Sprachen = 12.600 Zeichen +500.000 Zeichen/Monat → locker kostenlos! + +Selbst 100 Sprachen würden passen! +``` + +### DeepL Free Setup: + +```bash +# 1. Kostenlos registrieren +https://www.deepl.com/de/signup + +# 2. Python-Library +pip install deepl + +# 3. Script: +``` + +```python +#!/usr/bin/env python3 +# scripts/deepl_translate.py + +import deepl +import csv +import argparse + +def translate_csv_with_deepl(csv_file: str, language_code: str): + """ + Übersetze CSV-Spalte mit DeepL + language_code: "en", "fr", "es", "pt", "it", "nl", "pl" + """ + + # DeepL kostenlos (kein API-Key nötig für Web-Interface) + # Oder mit API-Key (kostenlos 500K chars): + # translator = deepl.Translator("your-free-api-key") + + # Für Free-Tier ohne API-Key: Google Translate Alternative + # ODER: Registriere dich für DeepL Free API + + translator = deepl.Translator("your-deepl-api-key") + + lang_map = { + 'en': 'EN-US', + 'fr': 'FR', + 'es': 'ES', + 'pt': 'PT', + 'it': 'IT', + 'nl': 'NL', + 'pl': 'PL', + 'de': 'DE' + } + + target_lang = lang_map.get(language_code, 'EN-US') + + # Lese CSV + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.reader(f) + rows = list(reader) + + # Übersetze Englisch-Spalte (Index 1) + if len(rows[0]) > 1 and rows[0][1] == 'Englisch': + # Erste Zeile ist Header, überspringe + for i in range(1, len(rows)): + if len(rows[i]) > 1 and rows[i][1]: # Wenn Englisch-Text + english_text = rows[i][1] + + # Übersetze mit DeepL + result = translator.translate_text( + english_text, + target_lang=target_lang + ) + + rows[i].append(result.text) + print(f"✓ {english_text:30} → {result.text}") + + # Speichern + with open(csv_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerows(rows) + + print(f"\n✅ Übersetzt mit DeepL!") + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--csv', required=True) + parser.add_argument('--lang', required=True, help='en, fr, es, pt, it, nl, pl') + + args = parser.parse_args() + translate_csv_with_deepl(args.csv, args.lang) +``` + +--- + +## 3. Strategie: Nur NEUE Strings übersetzen + +### Problem: +``` +Jedes Mal ALLE 70 Wörter übersetzen = Verschwendung +Besser: Nur neue/veränderte Strings +``` + +### Lösung: Delta-Übersetzung + +```python +#!/usr/bin/env python3 +# scripts/translate_delta.py + +import deepl +import csv +import hashlib +import json +from pathlib import Path + +class DeltaTranslator: + def __init__(self, api_key: str): + self.translator = deepl.Translator(api_key) + self.cache_file = "translations/translation_cache.json" + self.cache = self.load_cache() + + def load_cache(self): + """Lade bereits übersetzte Wörter aus Cache""" + if Path(self.cache_file).exists(): + with open(self.cache_file, 'r', encoding='utf-8') as f: + return json.load(f) + return {} + + def save_cache(self): + """Speichere Cache""" + with open(self.cache_file, 'w', encoding='utf-8') as f: + json.dump(self.cache, f, ensure_ascii=False, indent=2) + + def get_hash(self, text: str) -> str: + """Generiere Hash für Wort""" + return hashlib.md5(text.encode()).hexdigest() + + def translate_csv_delta(self, csv_file: str, language_code: str): + """ + Übersetze nur NEUE Wörter + Cache speichert bereits übersetzte + """ + + lang_map = { + 'en': 'EN-US', 'fr': 'FR', 'es': 'ES', 'pt': 'PT', + 'it': 'IT', 'nl': 'NL', 'pl': 'PL' + } + target_lang = lang_map.get(language_code, 'EN-US') + + # Lese CSV + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.reader(f) + rows = list(reader) + + translated_count = 0 + cached_count = 0 + + # Verarbeite Strings + for i in range(1, len(rows)): # Überspringe Header + if len(rows[i]) > 1 and rows[i][1]: + english_text = rows[i][1] + text_hash = self.get_hash(english_text) + + # Check Cache + cache_key = f"{language_code}:{text_hash}" + + if cache_key in self.cache: + # Aus Cache nehmen + translation = self.cache[cache_key] + cached_count += 1 + print(f"⚡ (Cache) {english_text:30} → {translation}") + else: + # Neu übersetzen + result = self.translator.translate_text( + english_text, + target_lang=target_lang + ) + translation = result.text + self.cache[cache_key] = translation + translated_count += 1 + print(f"✓ (Neu) {english_text:30} → {translation}") + + rows[i].append(translation) + + # Speichern + with open(csv_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerows(rows) + + # Cache speichern + self.save_cache() + + print(f"\n✅ Fertig!") + print(f" Neu übersetzt: {translated_count}") + print(f" Aus Cache: {cached_count}") + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument('--csv', required=True) + parser.add_argument('--lang', required=True) + parser.add_argument('--api-key', required=True) + + args = parser.parse_args() + + translator = DeltaTranslator(args.api_key) + translator.translate_csv_delta(args.csv, args.lang) +``` + +### Verwendung: + +```bash +# Erste Übersetzung (alle Wörter) +python3 scripts/translate_delta.py \ + --csv translations/glossary_all.csv \ + --lang fr \ + --api-key "your-deepl-api-key" + +# Output: +# ✓ (Neu) Abbrechen → Annuler +# ✓ (Neu) Anmeldedaten → Identifiants +# ... 70 Wörter +# ✅ Fertig! +# Neu übersetzt: 70 +# Aus Cache: 0 + +# Später: Nur 5 neue Wörter hinzugefügt +# Zweite Übersetzung +python3 scripts/translate_delta.py \ + --csv translations/glossary_all.csv \ + --lang fr \ + --api-key "your-deepl-api-key" + +# Output: +# ⚡ (Cache) Abbrechen → Annuler +# ⚡ (Cache) Anmeldedaten → Identifiants +# ... 65 cached +# ✓ (Neu) Synchronisieren → Synchroniser +# ✓ (Neu) Verschlüsseln → Chiffrer +# ... 5 neue +# ✅ Fertig! +# Neu übersetzt: 5 +# Aus Cache: 65 + +# Cache-Datei: translation_cache.json +# { +# "fr:abc123...": "Annuler", +# "fr:def456...": "Identifiants", +# ... +# } +``` + +--- + +## 4. Rechtschreibung & Grammatik + +### Optionen: + +| Tool | Kostenlos | Qualität | LLM | Einfachheit | +|------|-----------|----------|-----|-------------| +| **LanguageTool** | ✅ Kostenlos | ✅✅ Gut | ❌ | ✅✅ Einfach | +| **Grammarly API** | ❌ Bezahlt | ✅✅✅ Sehr gut | ✅ LLM | ⚠️ Komplex | +| **Ollama (lokales LLM)** | ✅ Kostenlos | ✅ Gut | ✅ Ja | ✅ Einfach | +| **ChatGPT API** | ❌ Bezahlt | ✅✅✅ Excellent | ✅ GPT-4 | ⚠️ Teuer | + +### EMPFEHLUNG: LanguageTool (kostenlos) + +```bash +pip install language-tool-python +``` + +```python +#!/usr/bin/env python3 +# scripts/check_grammar.py + +from language_tool_python import LanguageTool +import csv + +def check_translations_grammar(csv_file: str, language_code: str): + """ + Prüfe Rechtschreibung & Grammatik der Übersetzungen + """ + + # LanguageTool für verschiedene Sprachen + lang_map = { + 'en': 'en-US', + 'fr': 'fr', + 'es': 'es', + 'pt': 'pt', + 'it': 'it', + 'nl': 'nl', + 'pl': 'pl' + } + + tool = LanguageTool(lang_map.get(language_code, 'en-US')) + + # Lese CSV + with open(csv_file, 'r', encoding='utf-8') as f: + reader = csv.reader(f) + rows = list(reader) + + issues_found = 0 + + # Prüfe jede Übersetzung + for i in range(1, len(rows)): + if len(rows[i]) > 1 and rows[i][1]: + original = rows[i][0] + translation = rows[i][1] + + # Prüfe + matches = tool.check(translation) + + if matches: + issues_found += 1 + print(f"\n⚠️ {original}") + print(f" Übersetzung: {translation}") + + for match in matches: + print(f" Fehler: {match.message}") + print(f" Vorschlag: {match.replacements[:3]}") + + print(f"\n✅ Grammatik-Prüfung fertig!") + print(f" Probleme gefunden: {issues_found}") + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument('--csv', required=True) + parser.add_argument('--lang', required=True) + + args = parser.parse_args() + check_translations_grammar(args.csv, args.lang) +``` + +### Verwendung: + +```bash +python3 scripts/check_grammar.py \ + --csv translations/glossary_all.csv \ + --lang fr + +# Output: +# ⚠️ Abbrechen +# Übersetzung: Anuler +# Fehler: Typo or grammar error +# Vorschlag: ['Annuler', 'Annulé', 'Annulez'] + +# ⚠️ Synchronisieren +# Übersetzung: Sincroniser +# Fehler: Word not recognized +# Vorschlag: ['Synchroniser', 'Sincronisé'] + +# ✅ Grammatik-Prüfung fertig! +# Probleme gefunden: 2 +``` + +--- + +## 5. Kompletter praktischer Workflow + +### Schritt 1: Englisch manuell (LM Studio) +```bash +# 70 Wörter mit LM Studio/Ollama +# 10-15 Minuten +``` + +### Schritt 2: Alle anderen Sprachen mit DeepL +```bash +# Englisch → 29 Sprachen +for lang in fr es pt it nl pl de sv da no; do + python3 scripts/translate_delta.py \ + --csv translations/glossary_all.csv \ + --lang $lang \ + --api-key "your-deepl-api-key" +done + +# Total: ~30 Sekunden (alles cached nach erstem Lauf) +``` + +### Schritt 3: Grammatik-Prüfung +```bash +python3 scripts/check_grammar.py \ + --csv translations/glossary_all.csv \ + --lang fr + +# Behebe Fehler manuell in Excel +``` + +### Schritt 4: Import & Release +```bash +./batch_import_parallel.sh + +git push +# GitHub Actions → Release +``` + +--- + +## 6. Kostenübersicht (30 Sprachen, 70 Wörter) + +| Methode | Kosten/Monat | Qualität | +|---------|-------------|----------| +| **DeepL Free** | €0 | ✅✅✅ Beste | +| **Google Translate Free** | €0 | ✅✅ Gut | +| **Microsoft Translator Free** | €0 | ✅✅ Gut | +| **OpenAI GPT-4** | €0.05-0.10 | ✅✅✅ Excellent | +| **AWS Translate** | €0.30 | ✅✅ Gut | + +**EMPFEHLUNG: DeepL Free + LanguageTool (€0 / 100% kostenlos)** + +--- + +## 7. Cache-Strategie (wichtig!) + +``` +Ersten Monat: Alle 70 Wörter × 30 Sprachen = 500K chars +↓ +Cache speichert alles +↓ +Nächste Monate: +- 5 neue Strings hinzugefügt? +- Nur diese 5 × 30 Sprachen übersetzen +- Rest aus Cache +↓ +99% Kostenersparnis! +``` + +### Cache-Datei: +```json +{ + "fr:abc123": "Annuler", + "es:abc123": "Cancelar", + "pt:abc123": "Cancelar", + "it:abc123": "Annulla", + ... +} +``` + +--- + +## Fazit + +**Dein BESTES Setup:** + +``` +1. Englisch: LM Studio/Ollama manuell (10 Min) +2. Rest: DeepL Free API (kostenlos, sehr gut) +3. Cache: Nur neue Strings übersetzen (99% Ersparnis) +4. Grammar: LanguageTool kostenlos prüfen +5. Import: Automatisch + +TOTAL KOSTEN: €0 / 100% kostenlos! +TOTAL ZEIT: 15-20 Minuten für 30 Sprachen +QUALITÄT: Höchste (besser als Google!) +``` + +**Du brauchst wirklich nichts zu bezahlen!** 🎯 diff --git a/icons/mailadler-logo-512.png b/icons/mailadler-logo-512.png new file mode 100644 index 0000000000000000000000000000000000000000..6af2735526565bda5a6d7a9f564ad46b9764071a GIT binary patch literal 827990 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

}5nQQI{ zduZOMeW3a`TlXt~^bLQ}(%*dEpA4is{H`8#4*-`O0*D1H7k#G)aTC~EPQ$`#b4r{q z=V8ziP5y=zdnCA_lt1^6fjNS;wOG|E@OmtQuXZUKs9={ZN+(i0S)sGpVXA`H=@3f z{o7mcYZvE}@%VLIoHtg=<2}m6;{xuO_)B}gbolYxb%7J@2C)4m>c*BriVRLu^ry7|XvlB7!|7F+T>QcRwxrm)B9EN#lqD2|Mgx)TC02BKk z6>98f+9Bj_?X^M8d>pIh5ZkvFZq@pg!YrF%v-vmTySZ=nAh~Gk^%t$ZzH{h%e!UXr z18EMGG-C|N>0TU8{_FPN2U&M*!gb4+Vbj;GU@Xs{qW{}f#N)cs{3Xy5Z#LW>IQ2FN zx7s&x9A_&1rKr9%`Pw$mKF+(^NAqvTow?1)x=D`f`SH8cM+8W&9Q*Tts=w@ke|bp# z1e~|)FOOr4&87%3S{^axP!zHxmzVEc}haYYF=y z6AXq_RSBs)MGOayEHzZH;HTFB0tP-HViTVYZx{M4Fjl1Q28}qo5?K1JXB0Rw?Azyd z80t$+SNGmT{H&$fjslh$@h=UcGd%ztq@g)L%-DH{(g`56cifCmdV8s}{~Z6`!182X z&F0Ub$9a$WxCa=NF(d38_-VFPWAwO5Jn<@IS0>ldjm zYlighk}UC?rss(!NAvb->b#5$q^+fkyGEtSjaH_-aQE(b4YgnU9f$n#5kG~uSP{Kr zH>VLw+Jbuvj%!(9z2_lOILMYfKu^AtS5qTC1@ySD^=o?noC9%=yPSlI-f3^X-6=17 z8&jE!P8aCS?)n|4cq!V-lR4jd+hm@%#`UjB(pIyfohbJ^-gOu3LuDK~cNBiGHA+Vn z)@4kndBDWkgT$X-th1REwSPka0!f7i3WEQ zRuJ0su!Nv+sEB*W^A|~OL}yP=Kn+*{#Tz{9C>Z9jxWe;l`$Dy$Eq6Auo{EfZ?YhrT zewWdMQzhY!m6({W}JrX;4Oe~F!qAwf}!cR+bPR|4*+Xq+U@=Cy(@@0Vx@yJKIQE)M@U$R z*^ysAseQID`cHNFk%<~_Zyan6A4fo{A6#0UKUz7xuGyiQHL>hbnj6mb4�rFurxT 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

- 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

  • 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

    v~y1Zg~ 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 z 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

    BG(CD4vz7Ruy0m_zS)$rDRTL7tR*37#YdW>- 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 b9y1h>W;C1pcSLbaO1m9s^HGcb)U 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¥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 literal 0 HcmV?d00001 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a5d2092..9c94eff 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,151 +1,30 @@ find_package(Qt6 REQUIRED COMPONENTS Core) add_executable(shotcut WIN32 MACOSX_BUNDLE - abstractproducerwidget.cpp abstractproducerwidget.h actions.cpp actions.h autosavefile.cpp autosavefile.h - commands/filtercommands.cpp commands/filtercommands.h - commands/markercommands.cpp commands/markercommands.h - commands/playlistcommands.cpp commands/playlistcommands.h - commands/subtitlecommands.cpp commands/subtitlecommands.h - commands/timelinecommands.cpp commands/timelinecommands.h commands/undohelper.cpp commands/undohelper.h - controllers/filtercontroller.cpp controllers/filtercontroller.h - controllers/scopecontroller.cpp controllers/scopecontroller.h database.cpp database.h - dialogs/actionsdialog.cpp dialogs/actionsdialog.h - dialogs/addencodepresetdialog.cpp dialogs/addencodepresetdialog.h - dialogs/addencodepresetdialog.ui - dialogs/alignaudiodialog.cpp dialogs/alignaudiodialog.h - dialogs/alignmentarray.cpp dialogs/alignmentarray.h - dialogs/bitratedialog.h dialogs/bitratedialog.cpp - dialogs/customprofiledialog.cpp dialogs/customprofiledialog.h - dialogs/customprofiledialog.ui - dialogs/durationdialog.cpp dialogs/durationdialog.h - dialogs/durationdialog.ui - dialogs/editmarkerdialog.cpp dialogs/editmarkerdialog.h - dialogs/filedatedialog.cpp dialogs/filedatedialog.h dialogs/filedownloaddialog.cpp dialogs/filedownloaddialog.h dialogs/listselectiondialog.cpp dialogs/listselectiondialog.h dialogs/listselectiondialog.ui dialogs/longuitask.cpp dialogs/longuitask.h - dialogs/multifileexportdialog.cpp dialogs/multifileexportdialog.h dialogs/resourcedialog.cpp dialogs/resourcedialog.h - dialogs/saveimagedialog.cpp dialogs/saveimagedialog.h - dialogs/slideshowgeneratordialog.cpp dialogs/slideshowgeneratordialog.h - dialogs/speechdialog.h dialogs/speechdialog.cpp - dialogs/subtitletrackdialog.cpp dialogs/subtitletrackdialog.h - dialogs/systemsyncdialog.cpp dialogs/systemsyncdialog.h - dialogs/systemsyncdialog.ui dialogs/textviewerdialog.cpp dialogs/textviewerdialog.h dialogs/textviewerdialog.ui - dialogs/transcodedialog.cpp dialogs/transcodedialog.h - dialogs/transcodedialog.ui - dialogs/transcribeaudiodialog.cpp dialogs/transcribeaudiodialog.h - dialogs/unlinkedfilesdialog.cpp dialogs/unlinkedfilesdialog.h - dialogs/unlinkedfilesdialog.ui - docks/encodedock.cpp docks/encodedock.h - docks/encodedock.ui - docks/filesdock.cpp docks/filesdock.h - docks/filesdock.ui - docks/filtersdock.cpp docks/filtersdock.h docks/jobsdock.cpp docks/jobsdock.h docks/jobsdock.ui - docks/keyframesdock.cpp docks/keyframesdock.h - docks/markersdock.cpp docks/markersdock.h - docks/notesdock.cpp docks/notesdock.h - docks/playlistdock.cpp docks/playlistdock.h - docks/playlistdock.ui - docks/recentdock.cpp docks/recentdock.h - docks/recentdock.ui - docks/scopedock.cpp docks/scopedock.h - docks/subtitlesdock.cpp docks/subtitlesdock.h - docks/timelinedock.cpp docks/timelinedock.h - FlatpakWrapperGenerator.cpp FlatpakWrapperGenerator.h - htmlgenerator.h htmlgenerator.cpp jobqueue.cpp jobqueue.h jobs/abstractjob.cpp jobs/abstractjob.h - jobs/bitrateviewerjob.h jobs/bitrateviewerjob.cpp - jobs/dockerpulljob.h jobs/dockerpulljob.cpp - jobs/encodejob.cpp jobs/encodejob.h - jobs/ffmpegjob.cpp jobs/ffmpegjob.h - jobs/ffprobejob.cpp jobs/ffprobejob.h - jobs/gopro2gpxjob.cpp jobs/gopro2gpxjob.h - jobs/htmlgeneratorjob.cpp jobs/htmlgeneratorjob.h - jobs/kokorodokijob.cpp jobs/kokorodokijob.h - jobs/meltjob.cpp jobs/meltjob.h jobs/postjobaction.cpp jobs/postjobaction.h - jobs/qimagejob.cpp jobs/qimagejob.h - jobs/screencapturejob.cpp jobs/screencapturejob.h - jobs/videoqualityjob.cpp jobs/videoqualityjob.h - jobs/whisperjob.cpp jobs/whisperjob.h main.cpp mainwindow.cpp mainwindow.h mainwindow.ui - mltcontroller.cpp mltcontroller.h - mltxmlchecker.cpp mltxmlchecker.h - models/actionsmodel.cpp models/actionsmodel.h - models/alignclipsmodel.cpp models/alignclipsmodel.h - models/attachedfiltersmodel.cpp models/attachedfiltersmodel.h - models/audiolevelstask.cpp models/audiolevelstask.h - models/extensionmodel.cpp models/extensionmodel.h - models/keyframesmodel.cpp models/keyframesmodel.h - models/markersmodel.cpp models/markersmodel.h - models/metadatamodel.cpp models/metadatamodel.h - models/motiontrackermodel.h models/motiontrackermodel.cpp - models/multitrackmodel.cpp models/multitrackmodel.h - models/playlistmodel.cpp models/playlistmodel.h - models/resourcemodel.cpp models/resourcemodel.h - models/subtitles.cpp models/subtitles.h - models/subtitlesmodel.cpp models/subtitlesmodel.h - models/subtitlesselectionmodel.cpp models/subtitlesselectionmodel.h openotherdialog.cpp openotherdialog.h openotherdialog.ui - player.cpp player.h - proxymanager.cpp proxymanager.h - qmltypes/colordialog.h qmltypes/colordialog.cpp - qmltypes/colorpickeritem.cpp qmltypes/colorpickeritem.h - qmltypes/colorwheelitem.cpp qmltypes/colorwheelitem.h - qmltypes/filedialog.h qmltypes/filedialog.cpp - qmltypes/fontdialog.h qmltypes/fontdialog.cpp - qmltypes/messagedialog.h qmltypes/messagedialog.cpp - qmltypes/qmlapplication.cpp qmltypes/qmlapplication.h - qmltypes/qmleditmenu.cpp qmltypes/qmleditmenu.h - qmltypes/qmlextension.cpp qmltypes/qmlextension.h - qmltypes/qmlfile.cpp qmltypes/qmlfile.h - qmltypes/qmlfilter.cpp qmltypes/qmlfilter.h - qmltypes/qmlmarkermenu.cpp qmltypes/qmlmarkermenu.h - qmltypes/qmlmetadata.cpp qmltypes/qmlmetadata.h - qmltypes/qmlproducer.cpp qmltypes/qmlproducer.h - qmltypes/qmlprofile.cpp qmltypes/qmlprofile.h - qmltypes/qmlrichtext.cpp qmltypes/qmlrichtext.h - qmltypes/qmlrichtextmenu.cpp qmltypes/qmlrichtextmenu.h - qmltypes/qmlutilities.cpp qmltypes/qmlutilities.h - qmltypes/qmlview.cpp qmltypes/qmlview.h - qmltypes/thumbnailprovider.cpp qmltypes/thumbnailprovider.h - qmltypes/timelineitems.cpp qmltypes/timelineitems.h resources.qrc - scrubbar.cpp scrubbar.h settings.cpp settings.h - sharedframe.cpp sharedframe.h - shotcut_mlt_properties.h - transcoder.cpp transcoder.h - screencapture/rectangleselector.cpp - screencapture/rectangleselector.h - screencapture/screencapture.cpp - screencapture/screencapture.h - screencapture/toolbarwidget.cpp - screencapture/toolbarwidget.h - screencapture/windowpicker.cpp - screencapture/windowpicker.h - spatialmedia/box.cpp spatialmedia/box.h - spatialmedia/container.cpp spatialmedia/container.h - spatialmedia/mpeg4_container.cpp spatialmedia/mpeg4_container.h - spatialmedia/sa3d.cpp spatialmedia/sa3d.h - spatialmedia/spatialmedia.cpp spatialmedia/spatialmedia.h - transportcontrol.h util.cpp util.h - videowidget.cpp videowidget.h widgets/alsawidget.cpp widgets/alsawidget.h widgets/alsawidget.ui widgets/audiometerwidget.cpp widgets/audiometerwidget.h @@ -269,26 +148,18 @@ add_custom_target(OTHER_FILES target_link_libraries(shotcut PRIVATE CuteLogger - PkgConfig::mlt++ - PkgConfig::FFTW - Qt6::Charts - Qt6::Multimedia Qt6::Network - Qt6::OpenGL - Qt6::OpenGLWidgets - Qt6::QuickControls2 - Qt6::QuickWidgets Qt6::Sql - Qt6::WebSockets Qt6::Widgets Qt6::Xml ) if(UNIX AND NOT APPLE) - target_link_libraries(shotcut PRIVATE Qt6::DBus X11::X11) + target_link_libraries(shotcut PRIVATE Qt6::DBus) endif() -file(GLOB_RECURSE QML_SRC "qml/*") -target_sources(shotcut PRIVATE ${QML_SRC}) +# QML files disabled during mail client migration +# file(GLOB_RECURSE QML_SRC "qml/*") +# target_sources(shotcut PRIVATE ${QML_SRC}) target_include_directories(shotcut PRIVATE ${CMAKE_SOURCE_DIR}/CuteLogger/include) target_compile_definitions(shotcut PRIVATE SHOTCUT_VERSION="${SHOTCUT_VERSION}") diff --git a/src/main.cpp b/src/main.cpp index d94206b..bf1dea1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,12 +21,10 @@ #include "mainwindow.h" #include "settings.h" -#include +// #include // MLT disabled #include #include #include -#include -#include #include #include #include @@ -49,6 +47,7 @@ __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001; static const int kMaxCacheCount = 5000; +/* MLT log handler disabled - MLT framework removed static void mlt_log_handler(void *service, int mlt_level, const char *format, va_list args) { if (mlt_level > mlt_log_get_level()) @@ -75,32 +74,33 @@ static void mlt_log_handler(void *service, int mlt_level, const char *format, va break; } QString message; - mlt_properties properties = service ? MLT_SERVICE_PROPERTIES((mlt_service) service) : NULL; - if (properties) { - char *mlt_type = mlt_properties_get(properties, "mlt_type"); - char *service_name = mlt_properties_get(properties, "mlt_service"); - char *resource = mlt_properties_get(properties, "resource"); - if (!resource || resource[0] != '<' || resource[strlen(resource) - 1] != '>') - mlt_type = mlt_properties_get(properties, "mlt_type"); - if (service_name) - message = QStringLiteral("[%1 %2] ").arg(mlt_type, service_name); - else - message = QString::asprintf("[%s %p] ", mlt_type, service); - if (resource) - message.append(QStringLiteral("\"%1\" ").arg(resource)); - message.append(QString::vasprintf(format, args)); - message.replace('\n', ""); - } else { - message = QString::vasprintf(format, args); - message.replace('\n', ""); + // mlt_properties properties = service ? MLT_SERVICE_PROPERTIES((mlt_service) service) : NULL; + // if (properties) { + // char *mlt_type = mlt_properties_get(properties, "mlt_type"); + // char *service_name = mlt_properties_get(properties, "mlt_service"); + // char *resource = mlt_properties_get(properties, "resource"); + // if (!resource || resource[0] != '<' || resource[strlen(resource) - 1] != '>') + // mlt_type = mlt_properties_get(properties, "mlt_type"); + // if (service_name) + // message = QStringLiteral("[%1 %2] ").arg(mlt_type, service_name); + // else + // message = QString::asprintf("[%s %p] ", mlt_type, service); + // if (resource) + // message.append(QStringLiteral("\"%1\" ").arg(resource)); + // message.append(QString::vasprintf(format, args)); + // message.replace('\n', ""); + // } else { + // message = QString::vasprintf(format, args); + // message.replace('\n', ""); + // } + // cuteLogger->write(cuteLoggerLevel, + // __FILE__, + // __LINE__, + // "MLT", + // cuteLogger->defaultCategory().toLatin1().constData(), + // message); } - cuteLogger->write(cuteLoggerLevel, - __FILE__, - __LINE__, - "MLT", - cuteLogger->defaultCategory().toLatin1().constData(), - message); -} + */ class Application : public QApplication { @@ -262,11 +262,11 @@ public: consoleAppender->setFormat(fileAppender->format()); cuteLogger->registerAppender(consoleAppender); - mlt_log_set_level(MLT_LOG_VERBOSE); -#else - mlt_log_set_level(MLT_LOG_INFO); -#endif - mlt_log_set_callback(mlt_log_handler); + // mlt_log_set_level(MLT_LOG_VERBOSE); + // #else + // mlt_log_set_level(MLT_LOG_INFO); + // #endif + // mlt_log_set_callback(mlt_log_handler); // MLT disabled cuteLogger->logToGlobalInstance("qml", true); #if defined(Q_OS_WIN) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bdff4d6..5dee2b5 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -21,76 +21,19 @@ #include "Logger.h" #include "actions.h" #include "autosavefile.h" -#include "commands/playlistcommands.h" -#include "controllers/filtercontroller.h" -#include "controllers/scopecontroller.h" #include "database.h" -#include "defaultlayouts.h" -#include "dialogs/actionsdialog.h" -#include "dialogs/customprofiledialog.h" +#include "dialogs/filedownloaddialog.h" #include "dialogs/listselectiondialog.h" #include "dialogs/longuitask.h" #include "dialogs/resourcedialog.h" -#include "dialogs/saveimagedialog.h" -#include "dialogs/systemsyncdialog.h" #include "dialogs/textviewerdialog.h" -#include "dialogs/unlinkedfilesdialog.h" -#include "docks/encodedock.h" -#include "docks/filesdock.h" -#include "docks/filtersdock.h" -#include "docks/findanalysisfilterparser.h" #include "docks/jobsdock.h" -#include "docks/keyframesdock.h" -#include "docks/markersdock.h" -#include "docks/notesdock.h" -#include "docks/playlistdock.h" -#include "docks/recentdock.h" -#include "docks/subtitlesdock.h" -#include "docks/timelinedock.h" #include "jobqueue.h" -#include "jobs/screencapturejob.h" -#include "models/audiolevelstask.h" -#include "models/keyframesmodel.h" -#include "models/motiontrackermodel.h" #include "openotherdialog.h" -#include "player.h" -#include "proxymanager.h" -#include "qmltypes/qmlapplication.h" -#include "qmltypes/qmlprofile.h" -#include "qmltypes/qmlutilities.h" -#include "screencapture/screencapture.h" #include "settings.h" -#include "shotcut_mlt_properties.h" #include "util.h" -#include "videowidget.h" -#include "widgets/alsawidget.h" -#include "widgets/avformatproducerwidget.h" -#include "widgets/avfoundationproducerwidget.h" -#include "widgets/blipproducerwidget.h" -#include "widgets/colorbarswidget.h" -#include "widgets/colorproducerwidget.h" -#include "widgets/countproducerwidget.h" -#include "widgets/decklinkproducerwidget.h" -#include "widgets/directshowvideowidget.h" -#include "widgets/glaxnimateproducerwidget.h" -#include "widgets/htmlgeneratorwidget.h" -#include "widgets/imageproducerwidget.h" -#include "widgets/isingwidget.h" -#include "widgets/lissajouswidget.h" -#include "widgets/lumamixtransition.h" -#include "widgets/mltclipproducerwidget.h" -#include "widgets/newprojectfolder.h" -#include "widgets/noisewidget.h" -#include "widgets/plasmawidget.h" -#include "widgets/pulseaudiowidget.h" -#include "widgets/textproducerwidget.h" -#include "widgets/timelinepropertieswidget.h" -#include "widgets/toneproducerwidget.h" -#include "widgets/trackpropertieswidget.h" -#include "widgets/video4linuxwidget.h" -#if defined(Q_OS_WIN) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) -#include "windowstools.h" -#endif +// Widget includes disabled - video-specific modules +// #include "widgets/..." #include #include @@ -201,27 +144,27 @@ MainWindow::MainWindow() setupAndConnectUndoStack(); // Add the player widget. - setupAndConnectPlayerWidget(); + // setupAndConnectPlayerWidget(); // DISABLED: video player removed setupSettingsMenu(); setupOpenOtherMenu(); - readPlayerSettings(); - configureVideoWidget(); + // readPlayerSettings(); // DISABLED: video-specific + // configureVideoWidget(); // DISABLED: video-specific // Restore custom colors from settings Settings.restoreCustomColors(); - centerLayoutInRemainingToolbarSpace(); + // centerLayoutInRemainingToolbarSpace(); // DISABLED: video-specific #ifndef SHOTCUT_NOUPGRADE if (Settings.noUpgrade() || qApp->property("noupgrade").toBool()) #endif delete ui->actionUpgrade; - setupAndConnectDocks(); - setupMenuFile(); - setupMenuView(); - connectVideoWidgetSignals(); + // setupAndConnectDocks(); // DISABLED: mostly video + // setupMenuFile(); // DISABLED + // setupMenuView(); // DISABLED + // connectVideoWidgetSignals(); // DISABLED readWindowSettings(); setupActions(); setupLayoutSwitcher(); @@ -1016,24 +959,28 @@ void MainWindow::onFocusObjectChanged(QObject *) const void MainWindow::onTimelineClipSelected() { + // DISABLED: MLT timeline/player // Switch to Project player. - if (m_player->tabIndex() != Player::ProjectTabIndex) { - m_timelineDock->saveAndClearSelection(); - m_player->onTabBarClicked(Player::ProjectTabIndex); - } + // if (m_player->tabIndex() != Player::ProjectTabIndex) { + // m_timelineDock->saveAndClearSelection(); + // m_player->onTabBarClicked(Player::ProjectTabIndex); + // } } +/* DISABLED: MLT playlist timeline function void MainWindow::onAddAllToTimeline(Mlt::Playlist *playlist, bool skipProxy, bool emptyTrack) { + // DISABLED: MLT timeline/player // We stop the player because of a bug on Windows that results in some // strange memory leak when using Add All To Timeline, more noticeable // with (high res?) still image files. - if (MLT.isSeekable()) - m_player->pause(); - else - m_player->stop(); - m_timelineDock->appendFromPlaylist(playlist, skipProxy, emptyTrack); + // if (MLT.isSeekable()) + // m_player->pause(); + // else + // m_player->stop(); + // m_timelineDock->appendFromPlaylist(playlist, skipProxy, emptyTrack); } +*/ MainWindow &MainWindow::singleton() { @@ -1044,20 +991,20 @@ MainWindow &MainWindow::singleton() MainWindow::~MainWindow() { delete ui; - Mlt::Controller::destroy(); + // Mlt::Controller::destroy(); // DISABLED: MLT } void MainWindow::setupSettingsMenu() { LOG_DEBUG() << "begin"; - Mlt::Filter filter(MLT.profile(), "color_transform"); - if (!filter.is_valid()) { -#if LIBMLT_VERSION_INT < ((7 << 16) + (34 << 8)) - ui->actionNative10bitCpu->setVisible(false); -#endif - ui->actionLinear10bitCpu->setVisible(false); - } + // Mlt::Filter filter(MLT.profile(), "color_transform"); // DISABLED: MLT + // if (!filter.is_valid()) { // DISABLED: MLT + // #if LIBMLT_VERSION_INT < ((7 << 16) + (34 << 8)) + // ui->actionNative10bitCpu->setVisible(false); + // #endif + // ui->actionLinear10bitCpu->setVisible(false); + // } // DISABLED: MLT QActionGroup *group = new QActionGroup(this); ui->actionNative8bitCpu->setData(ShotcutSettings::Native8Cpu); if (ui->actionNative10bitCpu->isVisible()) @@ -1718,6 +1665,7 @@ void MainWindow::open(Mlt::Producer *producer, bool play) activateWindow(); } +/* DISABLED: MLT XML checker bool MainWindow::isCompatibleWithGpuMode(MltXmlChecker &checker, QString &fileName) { bool result = true; @@ -1760,8 +1708,10 @@ bool MainWindow::isCompatibleWithGpuMode(MltXmlChecker &checker, QString &fileNa } return result; } +*/ -bool MainWindow::saveConvertedXmlFile(MltXmlChecker &checker, QString &fileName) +/* +bool MainWindow::saveConvertedXmlFile_disabled(MltXmlChecker &checker, QString &fileName) { QFileInfo fi(fileName); const auto convertedStr = Settings.playerGPU() ? tr("Converted for GPU") @@ -1809,8 +1759,10 @@ bool MainWindow::saveConvertedXmlFile(MltXmlChecker &checker, QString &fileName) } return false; } +*/ -bool MainWindow::saveRepairedXmlFile(MltXmlChecker &checker, QString &fileName) +/* +bool MainWindow::saveRepairedXmlFile_disabled(MltXmlChecker &checker, QString &fileName) { QFileInfo fi(fileName); auto filename = QStringLiteral("%1/%2 - %3.%4") @@ -1856,8 +1808,13 @@ bool MainWindow::saveRepairedXmlFile(MltXmlChecker &checker, QString &fileName) } return false; } +*/ -bool MainWindow::isXmlRepaired(MltXmlChecker &checker, QString &fileName) +bool MainWindow::isXmlRepaired(MltXmlChecker &checker, QString &fileName) +{ return true; } // DISABLED: MLT XML checker + +/* +bool MainWindow::isXmlRepaired_disabled(MltXmlChecker &checker, QString &fileName) { bool result = true; if (checker.isCorrected()) { @@ -1889,6 +1846,7 @@ bool MainWindow::isXmlRepaired(MltXmlChecker &checker, QString &fileName) } return result; } +*/ bool MainWindow::checkAutoSave(QString &url) { @@ -1957,11 +1915,13 @@ QString MainWindow::untitledFileName() const void MainWindow::setProfile(const QString &profile_name) { + // DISABLED: MLT video profile LOG_DEBUG() << profile_name; - MLT.setProfile(profile_name); - emit profileChanged(); + // MLT.setProfile(profile_name); + // emit profileChanged(); } +/* DISABLED: MLT player references bool MainWindow::isSourceClipMyProject(QString resource, bool withDialog) { if (m_player->tabIndex() == Player::ProjectTabIndex && MLT.savedProducer() @@ -1988,7 +1948,9 @@ bool MainWindow::keyframesDockIsVisible() const { return m_keyframesDock && m_keyframesDock->isVisible(); } +*/ +/* DISABLED: MLT audio/video settings void MainWindow::setAudioChannels(int channels) { LOG_DEBUG() << channels; @@ -2030,6 +1992,7 @@ void MainWindow::setProcessingMode(ShotcutSettings::ProcessingMode mode) MLT.setProcessingMode(mode); emit processingModeChanged(); } +*/ void MainWindow::showSaveError() { @@ -2195,7 +2158,8 @@ void MainWindow::onAutosaveTimeout() } } -bool MainWindow::open(QString url, const Mlt::Properties *properties, bool play, bool skipConvert) +/* DISABLED: MLT open function - too large and video-specific +bool MainWindow::open_disabled(QString url, const Mlt::Properties *properties, bool play, bool skipConvert) { // returns false when MLT is unable to open the file, possibly because it has percent sign in the path LOG_DEBUG() << url; @@ -2216,37 +2180,37 @@ bool MainWindow::open(QString url, const Mlt::Properties *properties, bool play, } switch (checker.check(url)) { case QXmlStreamReader::NoError: - converted = isCompatibleWithGpuMode(checker, url); + converted = true; // isCompatibleWithGpuMode(checker, url); // DISABLED if (!converted) { showStatusMessage(tr("Failed to open ").append(url)); return true; } break; case QXmlStreamReader::CustomError: - showIncompatibleProjectMessage(checker.shotcutVersion()); + // showIncompatibleProjectMessage(checker.shotcutVersion()); // DISABLED: MLT return true; default: showStatusMessage(tr("Failed to open ").append(url)); return true; } // only check for a modified project when loading a project, not a simple producer - if (!continueModified()) - return true; - QCoreApplication::processEvents(); - // close existing project - if (playlist()) { - m_playlistDock->model()->close(); - } - if (multitrack()) { - m_timelineDock->model()->close(); - } - MLT.purgeMemoryPool(); - if (!isXmlRepaired(checker, url)) - return true; + if (!continueModified()) + return true; + QCoreApplication::processEvents(); + // close existing project + // if (playlist()) { // DISABLED: MLT + // m_playlistDock->model()->close(); + // } + // if (multitrack()) { // DISABLED: MLT + // m_timelineDock->model()->close(); + // } + // MLT.purgeMemoryPool(); // DISABLED + // if (!isXmlRepaired(checker, url)) // DISABLED + // return true; modified = checkAutoSave(url); if (modified) { if (checker.check(url) == QXmlStreamReader::NoError) { - converted = isCompatibleWithGpuMode(checker, url); + converted = true; // isCompatibleWithGpuMode(checker, url); // DISABLED if (!converted) return true; } else { @@ -2334,21 +2298,26 @@ void MainWindow::openMultiple(const QStringList &paths) open(paths.first()); } } +*/ + +bool MainWindow::open(QString url, const Mlt::Properties *properties, bool play, bool skipConvert) +{ return false; } // DISABLED: MLT // This one is invoked from above (command line) or drag-n-drop. void MainWindow::openMultiple(const QList &urls) { if (urls.size() > 1) { m_multipleFiles = Util::sortedFileList(Util::expandDirectories(urls)); - open(m_multipleFiles.first(), nullptr, true, true); + // open(m_multipleFiles.first(), nullptr, true, true); // DISABLED: MLT } else if (urls.size() > 0) { QUrl url = urls.first(); - if (!open(Util::removeFileScheme(url))) - open(Util::removeFileScheme(url, false)); + // if (!open(Util::removeFileScheme(url))) // DISABLED: MLT + // open(Util::removeFileScheme(url, false)); } } -// This is one is invoked from the action. +// DISABLED: openVideo - video-specific +/* void MainWindow::openVideo() { QString path = Settings.openPath(); @@ -2375,7 +2344,9 @@ void MainWindow::openVideo() activateWindow(); } } +*/ +/* void MainWindow::openCut(Mlt::Producer *producer, bool play) { m_player->setPauseAfterOpen(!play); @@ -2383,20 +2354,22 @@ void MainWindow::openCut(Mlt::Producer *producer, bool play) if (producer && producer->is_valid() && !MLT.isClosedClip(producer)) MLT.seek(producer->get_in()); } +*/ void MainWindow::hideProducer() { + // DISABLED: MLT producer hiding // This is a hack to release references to the old producer, but it // probably leaves a reference to the new color producer somewhere not // yet identified (root cause). - openCut(new Mlt::Producer(MLT.profile(), "color:_hide")); - QCoreApplication::processEvents(); - openCut(new Mlt::Producer(MLT.profile(), "color:_hide")); - QCoreApplication::processEvents(); + // openCut(new Mlt::Producer(MLT.profile(), "color:_hide")); + // QCoreApplication::processEvents(); + // openCut(new Mlt::Producer(MLT.profile(), "color:_hide")); + // QCoreApplication::processEvents(); - QScrollArea *scrollArea = (QScrollArea *) m_propertiesDock->widget(); - delete scrollArea->widget(); - scrollArea->setWidget(nullptr); + // QScrollArea *scrollArea = (QScrollArea *) m_propertiesDock->widget(); + // delete scrollArea->widget(); + // scrollArea->setWidget(nullptr); m_player->reset(); QCoreApplication::processEvents(); @@ -2404,31 +2377,35 @@ void MainWindow::hideProducer() void MainWindow::closeProducer() { - QCoreApplication::processEvents(); - hideProducer(); - m_filterController->motionTrackerModel()->load(); - MLT.close(); - MLT.setSavedProducer(nullptr); + // DISABLED: MLT producer closing + // QCoreApplication::processEvents(); + // hideProducer(); + // m_filterController->motionTrackerModel()->load(); + // MLT.close(); + // MLT.setSavedProducer(nullptr); } void MainWindow::showStatusMessage(QAction *action, int timeoutSeconds) { + // DISABLED: MLT player status // This object takes ownership of the passed action. // This version does not currently log its message. - m_statusBarAction.reset(action); - action->setParent(nullptr); - m_player->setStatusLabel(action->text(), timeoutSeconds, action); + // m_statusBarAction.reset(action); + // action->setParent(nullptr); + // m_player->setStatusLabel(action->text(), timeoutSeconds, action); + delete action; } void MainWindow::showStatusMessage(const QString &message, int timeoutSeconds, QPalette::ColorRole role) { + // DISABLED: MLT player status LOG_INFO() << message; - auto action = new QAction; - connect(action, SIGNAL(triggered()), this, SLOT(onStatusMessageClicked())); - m_statusBarAction.reset(action); - m_player->setStatusLabel(message, timeoutSeconds, action, role); + // auto action = new QAction; + // connect(action, SIGNAL(triggered()), this, SLOT(onStatusMessageClicked())); + // m_statusBarAction.reset(action); + // m_player->setStatusLabel(message, timeoutSeconds, action, role); } void MainWindow::onStatusMessageClicked() @@ -2438,53 +2415,60 @@ void MainWindow::onStatusMessageClicked() void MainWindow::seekPlaylist(int start) { - if (!playlist()) - return; - // we bypass this->open() to prevent sending producerOpened signal to self, which causes to reload playlist - if (!MLT.producer() - || (void *) MLT.producer()->get_producer() != (void *) playlist()->get_playlist()) - MLT.setProducer(new Mlt::Producer(*playlist())); - m_player->setIn(-1); - m_player->setOut(-1); - // since we do not emit producerOpened, these components need updating - on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); - m_player->onProducerOpened(false); - m_encodeDock->onProducerOpened(); - m_filterController->setProducer(); - updateMarkers(); - MLT.seek(start); - m_player->setFocus(); - m_player->switchToTab(Player::ProjectTabIndex); + // DISABLED: MLT playlist seeking + // if (!playlist()) + // return; + // // we bypass this->open() to prevent sending producerOpened signal to self, which causes to reload playlist + // if (!MLT.producer() + // || (void *) MLT.producer()->get_producer() != (void *) playlist()->get_playlist()) + // MLT.setProducer(new Mlt::Producer(*playlist())); + // m_player->setIn(-1); + // m_player->setOut(-1); + // // since we do not emit producerOpened, these components need updating + // on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); + // m_player->onProducerOpened(false); + // m_encodeDock->onProducerOpened(); + // m_filterController->setProducer(); + // updateMarkers(); + // MLT.seek(start); + // m_player->setFocus(); + // m_player->switchToTab(Player::ProjectTabIndex); + (void)start; } void MainWindow::seekTimeline(int position, bool seekPlayer) { - if (!multitrack()) - return; - // we bypass this->open() to prevent sending producerOpened signal to self, which causes to reload playlist - if (MLT.producer() - && (void *) MLT.producer()->get_producer() != (void *) multitrack()->get_producer()) { - MLT.setProducer(new Mlt::Producer(*multitrack())); - m_player->setIn(-1); - m_player->setOut(-1); - // since we do not emit producerOpened, these components need updating - on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); - m_player->onProducerOpened(false); - m_encodeDock->onProducerOpened(); - m_filterController->setProducer(); - updateMarkers(); - m_player->setFocus(); - m_player->switchToTab(Player::ProjectTabIndex); - } - if (seekPlayer) - m_player->seek(position); - else - m_player->pause(); + // DISABLED: MLT timeline seeking + // if (!multitrack()) + // return; + // // we bypass this->open() to prevent sending producerOpened signal to self, which causes to reload playlist + // if (MLT.producer() + // && (void *) MLT.producer()->get_producer() != (void *) multitrack()->get_producer()) { + // MLT.setProducer(new Mlt::Producer(*multitrack())); + // m_player->setIn(-1); + // m_player->setOut(-1); + // // since we do not emit producerOpened, these components need updating + // on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); + // m_player->onProducerOpened(false); + // m_encodeDock->onProducerOpened(); + // m_filterController->setProducer(); + // updateMarkers(); + // m_player->setFocus(); + // m_player->switchToTab(Player::ProjectTabIndex); + // } + // if (seekPlayer) + // m_player->seek(position); + // else + // m_player->pause(); + (void)position; + (void)seekPlayer; } void MainWindow::seekKeyframes(int position) { - m_player->seek(position); + // DISABLED: MLT keyframe seeking + // m_player->seek(position); + (void)position; } void MainWindow::readPlayerSettings() @@ -3292,47 +3276,49 @@ void MainWindow::on_actionOpenOther_triggered() void MainWindow::onProducerOpened(bool withReopen) { - QWidget *w = loadProducerWidget(MLT.producer()); - if (withReopen && w && !MLT.producer()->get(kMultitrackItemProperty)) { - if (-1 != w->metaObject()->indexOfSignal("producerReopened(bool)")) - connect(w, SIGNAL(producerReopened(bool)), m_player, SLOT(onProducerOpened(bool))); - } else if (MLT.isPlaylist()) { - m_playlistDock->model()->load(); - if (playlist()) { - m_isPlaylistLoaded = true; - m_player->setIn(-1); - m_player->setOut(-1); - m_playlistDock->setVisible(true); - m_playlistDock->raise(); - m_player->enableTab(Player::ProjectTabIndex); - m_player->switchToTab(Player::ProjectTabIndex); - } - } else if (MLT.isMultitrack()) { - m_timelineDock->model()->load(); - if (isMultitrackValid()) { - m_player->setIn(-1); - m_player->setOut(-1); - m_timelineDock->setVisible(true); - m_timelineDock->raise(); - m_player->enableTab(Player::ProjectTabIndex); - m_player->switchToTab(Player::ProjectTabIndex); - m_timelineDock->selectMultitrack(); - m_timelineDock->setSelection(); - } - } - if (MLT.isClip()) { - m_filterController->setProducer(MLT.producer()); - m_player->enableTab(Player::SourceTabIndex); - m_player->switchToTab(MLT.isClosedClip() ? Player::ProjectTabIndex : Player::SourceTabIndex); - Util::getHash(*MLT.producer()); - } + // DISABLED: MLT producer opening + // QWidget *w = loadProducerWidget(MLT.producer()); + // if (withReopen && w && !MLT.producer()->get(kMultitrackItemProperty)) { + // if (-1 != w->metaObject()->indexOfSignal("producerReopened(bool)")) + // connect(w, SIGNAL(producerReopened(bool)), m_player, SLOT(onProducerOpened(bool))); + // } else if (MLT.isPlaylist()) { + // m_playlistDock->model()->load(); + // if (playlist()) { + // m_isPlaylistLoaded = true; + // m_player->setIn(-1); + // m_player->setOut(-1); + // m_playlistDock->setVisible(true); + // m_playlistDock->raise(); + // m_player->enableTab(Player::ProjectTabIndex); + // m_player->switchToTab(Player::ProjectTabIndex); + // } + // } else if (MLT.isMultitrack()) { + // m_timelineDock->model()->load(); + // if (isMultitrackValid()) { + // m_player->setIn(-1); + // m_player->setOut(-1); + // m_timelineDock->setVisible(true); + // m_timelineDock->raise(); + // m_player->enableTab(Player::ProjectTabIndex); + // m_player->switchToTab(Player::ProjectTabIndex); + // m_timelineDock->selectMultitrack(); + // m_timelineDock->setSelection(); + // } + // } + // if (MLT.isClip()) { + // m_filterController->setProducer(MLT.producer()); + // m_player->enableTab(Player::SourceTabIndex); + // m_player->switchToTab(MLT.isClosedClip() ? Player::ProjectTabIndex : Player::SourceTabIndex); + // Util::getHash(*MLT.producer()); + // } ui->actionSave->setEnabled(true); - QMutexLocker locker(&m_autosaveMutex); - if (m_autosaveFile) - setCurrentFile(m_autosaveFile->managedFileName()); - else if (!MLT.URL().isEmpty()) - setCurrentFile(MLT.URL()); - on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); + // QMutexLocker locker(&m_autosaveMutex); + // if (m_autosaveFile) + // setCurrentFile(m_autosaveFile->managedFileName()); + // else if (!MLT.URL().isEmpty()) + // setCurrentFile(MLT.URL()); + // on_actionJack_triggered(ui->actionJack && ui->actionJack->isChecked()); + (void)withReopen; } void MainWindow::onProducerChanged() @@ -3411,78 +3397,81 @@ void MainWindow::on_actionPauseAfterSeek_triggered(bool checked) Settings.setPlayerPauseAfterSeek(checked); } +/* DISABLED: MLT crop/marker/selection functions void MainWindow::cropSource(const QRectF &rect) { - filterController()->removeCurrent(); + // DISABLED: MLT video cropping + // filterController()->removeCurrent(); - auto model = filterController()->attachedModel(); - Mlt::Service service; - for (int i = 0; i < model->rowCount(); i++) { - service = model->getService(i); - if (!qstrcmp("crop", service.get("mlt_service"))) - break; - } - if (!service.is_valid()) { - auto meta = filterController()->metadata("crop"); - service = model->getService(model->add(meta)); - service.set("use_profile", 1); - } - service.set("left", rect.x()); - service.set("right", MLT.profile().width() - rect.x() - rect.width()); - service.set("top", rect.y()); - service.set("bottom", MLT.profile().height() - rect.y() - rect.height()); + // auto model = filterController()->attachedModel(); + // Mlt::Service service; + // for (int i = 0; i < model->rowCount(); i++) { + // service = model->getService(i); + // if (!qstrcmp("crop", service.get("mlt_service"))) + // break; + // } + // if (!service.is_valid()) { + // auto meta = filterController()->metadata("crop"); + // service = model->getService(model->add(meta)); + // service.set("use_profile", 1); + // } + // service.set("left", rect.x()); + // service.set("right", MLT.profile().width() - rect.x() - rect.width()); + // service.set("top", rect.y()); + // service.set("bottom", MLT.profile().height() - rect.y() - rect.height()); - auto newWidth = Util::coerceMultiple(rect.width()); - auto newHeight = Util::coerceMultiple(rect.height()); - QMessageBox dialog(QMessageBox::Question, - qApp->applicationName(), - tr("Do you also want to change the Video Mode to %1 x %2?") - .arg(newWidth) - .arg(newHeight), - QMessageBox::No | QMessageBox::Yes, - this); - dialog.setWindowModality(QmlApplication::dialogModality()); - dialog.setDefaultButton(QMessageBox::Yes); - dialog.setEscapeButton(QMessageBox::No); - if (QMessageBox::Yes == dialog.exec()) { - auto leftRatio = rect.x() / MLT.profile().width(); - auto rightRatio = 1.0 - (rect.x() + newWidth) / MLT.profile().width(); - auto topRatio = rect.y() / MLT.profile().height(); - auto bottomRatio = 1.0 - (rect.y() + newHeight) / MLT.profile().height(); - - service.set("left", qRound(leftRatio * newWidth)); - service.set("right", qRound(rightRatio * newWidth)); - service.set("top", qRound(topRatio * newHeight)); - service.set("bottom", qRound(bottomRatio * newHeight)); - - MLT.profile().set_width(newWidth); - MLT.profile().set_height(newHeight); - MLT.profile().set_display_aspect(newWidth * MLT.profile().sar(), newHeight); - MLT.updatePreviewProfile(); - MLT.setPreviewScale(Settings.playerPreviewScale()); - auto xml = MLT.XML(); - emit profileChanged(); - MLT.reload(xml); - } - emit producerOpened(false); + // auto newWidth = Util::coerceMultiple(rect.width()); + // auto newHeight = Util::coerceMultiple(rect.height()); + // QMessageBox dialog(QMessageBox::Question, + // qApp->applicationName(), + // tr("Do you also want to change the Video Mode to %1 x %2?") + // .arg(newWidth) + // .arg(newHeight), + // QMessageBox::No | QMessageBox::Yes, + // this); + // dialog.setWindowModality(QmlApplication::dialogModality()); + // dialog.setDefaultButton(QMessageBox::Yes); + // dialog.setEscapeButton(QMessageBox::No); + // if (QMessageBox::Yes == dialog.exec()) { + // auto leftRatio = rect.x() / MLT.profile().width(); + // auto rightRatio = 1.0 - (rect.x() + newWidth) / MLT.profile().width(); + // auto topRatio = rect.y() / MLT.profile().height(); + // auto bottomRatio = 1.0 - (rect.y() + newHeight) / MLT.profile().height(); + // + // service.set("left", qRound(leftRatio * newWidth)); + // service.set("right", qRound(rightRatio * newWidth)); + // service.set("top", qRound(topRatio * newHeight)); + // service.set("bottom", qRound(bottomRatio * newHeight)); + // + // MLT.profile().set_width(newWidth); + // MLT.profile().set_height(newHeight); + // MLT.profile().set_display_aspect(newWidth * MLT.profile().sar(), newHeight); + // MLT.updatePreviewProfile(); + // MLT.setPreviewScale(Settings.playerPreviewScale()); + // auto xml = MLT.XML(); + // emit profileChanged(); + // MLT.reload(xml); + // } + // emit producerOpened(false); } void MainWindow::getMarkerRange(int position, int *start, int *end) { - if (!MLT.isMultitrack()) { - showStatusMessage(tr("Timeline is not loaded")); - } else { - MarkersModel *model = m_timelineDock->markersModel(); - int markerIndex = model->rangeMarkerIndexForPosition(position); - if (markerIndex >= 0) { - Markers::Marker marker = model->getMarker(markerIndex); - *start = marker.start; - *end = marker.end; - return; - } else { - showStatusMessage(tr("Range marker not found under the timeline cursor")); - } - } + // DISABLED: MLT timeline markers + // if (!MLT.isMultitrack()) { + // showStatusMessage(tr("Timeline is not loaded")); + // } else { + // MarkersModel *model = m_timelineDock->markersModel(); + // int markerIndex = model->rangeMarkerIndexForPosition(position); + // if (markerIndex >= 0) { + // Markers::Marker marker = model->getMarker(markerIndex); + // *start = marker.start; + // *end = marker.end; + // return; + // } else { + // showStatusMessage(tr("Range marker not found under the timeline cursor")); + // } + // } *start = -1; *end = -1; } @@ -3500,12 +3489,15 @@ void MainWindow::getSelectionRange(int *start, int *end) *start = -1; *end = -1; } -} - + } + */ + + /* DISABLED: MLT binPlaylist Mlt::Playlist *MainWindow::binPlaylist() { return m_playlistDock->binPlaylist(); } +*/ void MainWindow::showInFiles(const QString &filePath) { @@ -3513,12 +3505,14 @@ void MainWindow::showInFiles(const QString &filePath) m_filesDock->changeDirectory(filePath); } +/* DISABLED: MLT hardware decoder void MainWindow::turnOffHardwareDecoder() { ui->actionPreviewHardwareDecoder->setChecked(false); Settings.setPlayerPreviewHardwareDecoder(false); MLT.configureHardwareDecoder(false); } +*/ bool MainWindow::continueModified() { @@ -3692,36 +3686,41 @@ void MainWindow::onFilesDockTriggered(bool checked) } } +/* DISABLED: MLT player/playlist functions void MainWindow::onPlaylistCreated() { + // DISABLED: MLT playlist updateWindowTitle(); - if (!playlist() || playlist()->count() == 0) - return; - m_player->enableTab(Player::ProjectTabIndex, true); + // if (!playlist() || playlist()->count() == 0) + // return; + // m_player->enableTab(Player::ProjectTabIndex, true); } void MainWindow::onPlaylistLoaded() { - updateMarkers(); - m_player->enableTab(Player::ProjectTabIndex, true); + // DISABLED: MLT playlist loading + // updateMarkers(); + // m_player->enableTab(Player::ProjectTabIndex, true); } void MainWindow::onPlaylistCleared() { - m_player->onTabBarClicked(Player::SourceTabIndex); + // DISABLED: MLT playlist clearing + // m_player->onTabBarClicked(Player::SourceTabIndex); setWindowModified(true); } +*/ void MainWindow::onPlaylistClosed() { - setProfile(Settings.playerProfile()); - resetVideoModeMenu(); - setAudioChannels(Settings.playerAudioChannels()); + // setProfile(Settings.playerProfile()); // DISABLED: video + // resetVideoModeMenu(); // DISABLED: video + // setAudioChannels(Settings.playerAudioChannels()); // DISABLED: video setCurrentFile(""); setWindowModified(false); - resetSourceUpdated(); + // resetSourceUpdated(); // DISABLED: video m_undoStack->clear(); - MLT.resetURL(); + // MLT.resetURL(); // DISABLED: MLT QMutexLocker locker(&m_autosaveMutex); m_autosaveFile.reset(new AutoSaveFile(untitledFileName())); if (!isMultitrackValid()) @@ -3730,84 +3729,89 @@ void MainWindow::onPlaylistClosed() void MainWindow::onPlaylistModified() { + // DISABLED: MLT playlist modification setWindowModified(true); - if (MLT.producer() && playlist() - && (void *) MLT.producer()->get_producer() == (void *) playlist()->get_playlist()) - m_player->onDurationChanged(); - updateMarkers(); - m_player->enableTab(Player::ProjectTabIndex, true); + // if (MLT.producer() && playlist() + // && (void *) MLT.producer()->get_producer() == (void *) playlist()->get_playlist()) + // m_player->onDurationChanged(); + // updateMarkers(); + // m_player->enableTab(Player::ProjectTabIndex, true); } void MainWindow::onMultitrackCreated() { - m_player->enableTab(Player::ProjectTabIndex, true); - QString trackTransitionService = m_timelineDock->model()->trackTransitionService(); - m_filterController->setTrackTransitionService(trackTransitionService); + // DISABLED: MLT multitrack creation + // m_player->enableTab(Player::ProjectTabIndex, true); + // QString trackTransitionService = m_timelineDock->model()->trackTransitionService(); + // m_filterController->setTrackTransitionService(trackTransitionService); } void MainWindow::onMultitrackClosed() { - setAudioChannels(Settings.playerAudioChannels()); - setProfile(Settings.playerProfile()); - resetVideoModeMenu(); - setCurrentFile(""); - setWindowModified(false); - resetSourceUpdated(); - m_undoStack->clear(); - MLT.resetURL(); - QMutexLocker locker(&m_autosaveMutex); - m_autosaveFile.reset(new AutoSaveFile(untitledFileName())); - if (!playlist() || playlist()->count() == 0) - m_player->enableTab(Player::ProjectTabIndex, false); + // DISABLED: MLT multitrack closing + // setAudioChannels(Settings.playerAudioChannels()); + // setProfile(Settings.playerProfile()); + // resetVideoModeMenu(); + // setCurrentFile(""); + // setWindowModified(false); + // resetSourceUpdated(); + // m_undoStack->clear(); + // MLT.resetURL(); + // QMutexLocker locker(&m_autosaveMutex); + // m_autosaveFile.reset(new AutoSaveFile(untitledFileName())); + // if (!playlist() || playlist()->count() == 0) + // m_player->enableTab(Player::ProjectTabIndex, false); } void MainWindow::onMultitrackModified() { + // DISABLED: MLT multitrack modification with timeline dock setWindowModified(true); // Reflect this playlist info onto the producer for keyframes dock. - if (!m_timelineDock->selection().isEmpty()) { - int trackIndex = m_timelineDock->selection().first().y(); - int clipIndex = m_timelineDock->selection().first().x(); - auto info = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex); - if (info && info->producer && info->producer->is_valid()) { - int expected = info->frame_in; - auto info2 = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex - 1); - if (info2 && info2->producer && info2->producer->is_valid() - && info2->producer->get(kShotcutTransitionProperty)) { - // Factor in a transition left of the clip. - expected -= info2->frame_count; - info->producer->set(kPlaylistStartProperty, info2->start); - } else { - info->producer->set(kPlaylistStartProperty, info->start); - } - if (expected != info->producer->get_int(kFilterInProperty)) { - int delta = expected - info->producer->get_int(kFilterInProperty); - info->producer->set(kFilterInProperty, expected); - emit m_filtersDock->producerInChanged(delta); - } - expected = info->frame_out; - info2 = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex + 1); - if (info2 && info2->producer && info2->producer->is_valid() - && info2->producer->get(kShotcutTransitionProperty)) { - // Factor in a transition right of the clip. - expected += info2->frame_count; - } - if (expected != info->producer->get_int(kFilterOutProperty)) { - int delta = expected - info->producer->get_int(kFilterOutProperty); - info->producer->set(kFilterOutProperty, expected); - emit m_filtersDock->producerOutChanged(delta); - } - } - } - MLT.refreshConsumer(); + // if (!m_timelineDock->selection().isEmpty()) { + // int trackIndex = m_timelineDock->selection().first().y(); + // int clipIndex = m_timelineDock->selection().first().x(); + // auto info = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex); + // if (info && info->producer && info->producer->is_valid()) { + // int expected = info->frame_in; + // auto info2 = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex - 1); + // if (info2 && info2->producer && info2->producer->is_valid() + // && info2->producer->get(kShotcutTransitionProperty)) { + // // Factor in a transition left of the clip. + // expected -= info2->frame_count; + // info->producer->set(kPlaylistStartProperty, info2->start); + // } else { + // info->producer->set(kPlaylistStartProperty, info->start); + // } + // if (expected != info->producer->get_int(kFilterInProperty)) { + // int delta = expected - info->producer->get_int(kFilterInProperty); + // info->producer->set(kFilterInProperty, expected); + // emit m_filtersDock->producerInChanged(delta); + // } + // expected = info->frame_out; + // info2 = m_timelineDock->model()->getClipInfo(trackIndex, clipIndex + 1); + // if (info2 && info2->producer && info2->producer->is_valid() + // && info2->producer->get(kShotcutTransitionProperty)) { + // // Factor in a transition right of the clip. + // expected += info2->frame_count; + // } + // if (expected != info->producer->get_int(kFilterOutProperty)) { + // int delta = expected - info->producer->get_int(kFilterOutProperty); + // info->producer->set(kFilterOutProperty, expected); + // emit m_filtersDock->producerOutChanged(delta); + // } + // } + // } + // MLT.refreshConsumer(); } void MainWindow::onMultitrackDurationChanged() { - if (MLT.producer() - && (void *) MLT.producer()->get_producer() == (void *) multitrack()->get_producer()) - m_player->onDurationChanged(); + // DISABLED: MLT multitrack duration change + // if (MLT.producer() + // && (void *) MLT.producer()->get_producer() == (void *) multitrack()->get_producer()) + // m_player->onDurationChanged(); } void MainWindow::onNoteModified() @@ -4053,6 +4057,8 @@ void MainWindow::changeTheme(const QString &theme) LOG_DEBUG() << "end"; } +// DISABLED: MLT accessors +/* Mlt::Playlist *MainWindow::playlist() const { return m_playlistDock->model()->playlist(); @@ -4072,7 +4078,9 @@ bool MainWindow::isMultitrackValid() const { return m_timelineDock->model()->tractor() && !m_timelineDock->model()->trackList().empty(); } +*/ +/* DISABLED: MLT producer widget loading QWidget *MainWindow::loadProducerWidget(Mlt::Producer *producer) { QWidget *w = 0; @@ -4211,12 +4219,13 @@ QWidget *MainWindow::loadProducerWidget(Mlt::Producer *producer) scrollArea->setWidget(w); onProducerChanged(); } else if (scrollArea->widget()) { - scrollArea->widget()->deleteLater(); + scrollArea->widget()->deleteLater(); + } + return w; } - return w; -} - -void MainWindow::on_actionEnterFullScreen_triggered() + */ + + void MainWindow::on_actionEnterFullScreen_triggered() { bool isFull = isFullScreen(); if (isFull) { @@ -4230,24 +4239,26 @@ void MainWindow::on_actionEnterFullScreen_triggered() void MainWindow::onGpuNotSupported() { - if (Settings.processingMode() == ShotcutSettings::Linear10GpuCpu) { - Settings.setProcessingMode(ShotcutSettings::Native8Cpu); - } - ui->actionLinear10bitGpuCpu->setChecked(false); - ui->actionLinear10bitGpuCpu->setDisabled(true); - LOG_WARNING() << ""; - QMessageBox::critical(this, qApp->applicationName(), tr("GPU processing is not supported")); + // DISABLED: MLT GPU processing + // if (Settings.processingMode() == ShotcutSettings::Linear10GpuCpu) { + // Settings.setProcessingMode(ShotcutSettings::Native8Cpu); + // } + // ui->actionLinear10bitGpuCpu->setChecked(false); + // ui->actionLinear10bitGpuCpu->setDisabled(true); + LOG_WARNING() << "GPU not supported (disabled for mail client)"; + // QMessageBox::critical(this, qApp->applicationName(), tr("GPU processing is not supported")); } void MainWindow::onShuttle(float x) { - if (x == 0) { - m_player->pause(); - } else if (x > 0) { - m_player->play(10.0 * x); - } else { - m_player->play(20.0 * x); - } + // DISABLED: MLT player shuttle + // if (x == 0) { + // m_player->pause(); + // } else if (x > 0) { + // m_player->play(10.0 * x); + // } else { + // m_player->play(20.0 * x); + // } } void MainWindow::showUpgradePrompt() @@ -4479,91 +4490,93 @@ void MainWindow::on_actionJack_triggered(bool checked) void MainWindow::onExternalTriggered(QAction *action) { + // DISABLED: MLT external monitor output LOG_DEBUG() << action->data().toString(); - bool isExternal = !action->data().toString().isEmpty(); - QString profile = Settings.playerProfile(); - if (Settings.playerGPU() && MLT.producer() && Settings.playerExternal() != action->data()) { - if (confirmRestartExternalMonitor()) { - Settings.setPlayerExternal(action->data().toString()); - if (isExternal && profile.isEmpty()) { - profile = "atsc_720p_50"; - Settings.setPlayerProfile(profile); - } - m_exitCode = EXIT_RESTART; - QApplication::closeAllWindows(); - } else { - for (auto a : m_externalGroup->actions()) { - if (a->data() == Settings.playerExternal()) { - a->setChecked(true); - if (a->data().toString().startsWith("decklink")) { - if (m_decklinkGammaMenu) - m_decklinkGammaMenu->setEnabled(true); - if (m_keyerMenu) - m_keyerMenu->setEnabled(true); - } - break; - } - } - } - return; - } - Settings.setPlayerExternal(action->data().toString()); - MLT.stop(); - bool ok = false; - int screen = action->data().toInt(&ok); - if (ok || action->data().toString().isEmpty()) { - m_player->moveVideoToScreen(ok ? screen : -2); - isExternal = false; - MLT.videoWidget()->setProperty("mlt_service", QVariant()); - } else { - m_player->moveVideoToScreen(-2); - MLT.videoWidget()->setProperty("mlt_service", action->data()); - } + // bool isExternal = !action->data().toString().isEmpty(); + // QString profile = Settings.playerProfile(); + // if (Settings.playerGPU() && MLT.producer() && Settings.playerExternal() != action->data()) { + // if (confirmRestartExternalMonitor()) { + // Settings.setPlayerExternal(action->data().toString()); + // if (isExternal && profile.isEmpty()) { + // profile = "atsc_720p_50"; + // Settings.setPlayerProfile(profile); + // } + // m_exitCode = EXIT_RESTART; + // QApplication::closeAllWindows(); + // } else { + // for (auto a : m_externalGroup->actions()) { + // if (a->data() == Settings.playerExternal()) { + // a->setChecked(true); + // if (a->data().toString().startsWith("decklink")) { + // if (m_decklinkGammaMenu) + // m_decklinkGammaMenu->setEnabled(true); + // if (m_keyerMenu) + // m_keyerMenu->setEnabled(true); + // } + // break; + // } + // } + // } + // return; + // } + // Settings.setPlayerExternal(action->data().toString()); + // MLT.stop(); + // bool ok = false; + // int screen = action->data().toInt(&ok); + // if (ok || action->data().toString().isEmpty()) { + // m_player->moveVideoToScreen(ok ? screen : -2); + // isExternal = false; + // MLT.videoWidget()->setProperty("mlt_service", QVariant()); + // } else { + // m_player->moveVideoToScreen(-2); + // MLT.videoWidget()->setProperty("mlt_service", action->data()); + // } - // Automatic not permitted for SDI/HDMI - if (isExternal && profile.isEmpty()) { - auto xml = MLT.XML(); - profile = "atsc_720p_50"; - Settings.setPlayerProfile(profile); - setProfile(profile); - MLT.reload(xml); - foreach (QAction *a, m_profileGroup->actions()) { - if (a->data() == profile) { - a->setChecked(true); - break; - } - } - } else { - MLT.consumerChanged(); - } - // Automatic not permitted for SDI/HDMI - m_profileGroup->actions().at(0)->setEnabled(!isExternal); + // // Automatic not permitted for SDI/HDMI + // if (isExternal && profile.isEmpty()) { + // auto xml = MLT.XML(); + // profile = "atsc_720p_50"; + // Settings.setPlayerProfile(profile); + // setProfile(profile); + // MLT.reload(xml); + // foreach (QAction *a, m_profileGroup->actions()) { + // if (a->data() == profile) { + // a->setChecked(true); + // break; + // } + // } + // } else { + // MLT.consumerChanged(); + // } + // // Automatic not permitted for SDI/HDMI + // m_profileGroup->actions().at(0)->setEnabled(!isExternal); - // Disable progressive option when SDI/HDMI - ui->actionProgressive->setEnabled(!isExternal); - bool isProgressive = isExternal ? MLT.profile().progressive() - : ui->actionProgressive->isChecked(); - MLT.videoWidget()->setProperty("progressive", isProgressive); - if (MLT.consumer()) { - MLT.consumer()->set("progressive", isProgressive); - MLT.consumerChanged(); - } - if (action->data().toString().startsWith("decklink")) { - if (m_decklinkGammaMenu) - m_decklinkGammaMenu->setEnabled(true); - if (m_keyerMenu) - m_keyerMenu->setEnabled(true); - } + // // Disable progressive option when SDI/HDMI + // ui->actionProgressive->setEnabled(!isExternal); + // bool isProgressive = isExternal ? MLT.profile().progressive() + // : ui->actionProgressive->isChecked(); + // MLT.videoWidget()->setProperty("progressive", isProgressive); + // if (MLT.consumer()) { + // MLT.consumer()->set("progressive", isProgressive); + // MLT.consumerChanged(); + // } + // if (action->data().toString().startsWith("decklink")) { + // if (m_decklinkGammaMenu) + // m_decklinkGammaMenu->setEnabled(true); + // if (m_keyerMenu) + // m_keyerMenu->setEnabled(true); + // } - // Preview scaling not permitted for SDI/HDMI - if (isExternal) { - ui->actionPreview360->setEnabled(false); - ui->actionPreview540->setEnabled(false); - } else { - ui->actionPreview360->setEnabled(true); - ui->actionPreview540->setEnabled(true); - } - setPreviewScale(Settings.playerPreviewScale()); + // // Preview scaling not permitted for SDI/HDMI + // if (isExternal) { + // ui->actionPreview360->setEnabled(false); + // ui->actionPreview540->setEnabled(false); + // } else { + // ui->actionPreview360->setEnabled(true); + // ui->actionPreview540->setEnabled(true); + // } + // setPreviewScale(Settings.playerPreviewScale()); + (void)action; } void MainWindow::onDecklinkGammaTriggered(QAction *action) @@ -5105,7 +5118,8 @@ void MainWindow::onUpgradeTriggered() void MainWindow::onClipCopied() { - m_player->enableTab(Player::SourceTabIndex); + // DISABLED: MLT player tab enabling + // m_player->enableTab(Player::SourceTabIndex); } void MainWindow::on_actionExportEDL_triggered() @@ -5878,16 +5892,20 @@ void MainWindow::on_actionShowSmallIcons_toggled(bool b) void MainWindow::onPlaylistInChanged(int in) { - m_player->blockSignals(true); - m_player->setIn(in); - m_player->blockSignals(false); + // DISABLED: MLT player in point setting + // m_player->blockSignals(true); + // m_player->setIn(in); + // m_player->blockSignals(false); + (void)in; } void MainWindow::onPlaylistOutChanged(int out) { - m_player->blockSignals(true); - m_player->setOut(out); - m_player->blockSignals(false); + // DISABLED: MLT player out point setting + // m_player->blockSignals(true); + // m_player->setOut(out); + // m_player->blockSignals(false); + (void)out; } void MainWindow::on_actionPreviewNone_triggered(bool checked) @@ -5901,20 +5919,24 @@ void MainWindow::on_actionPreviewNone_triggered(bool checked) void MainWindow::on_actionPreview360_triggered(bool checked) { - if (checked) { - Settings.setPlayerPreviewScale(360); - setPreviewScale(360); - m_player->showIdleStatus(); - } + // DISABLED: MLT player preview scaling + // if (checked) { + // Settings.setPlayerPreviewScale(360); + // setPreviewScale(360); + // m_player->showIdleStatus(); + // } + (void)checked; } void MainWindow::on_actionPreview540_triggered(bool checked) { - if (checked) { - Settings.setPlayerPreviewScale(540); - setPreviewScale(540); - m_player->showIdleStatus(); - } + // DISABLED: MLT player preview scaling + // if (checked) { + // Settings.setPlayerPreviewScale(540); + // setPreviewScale(540); + // m_player->showIdleStatus(); + // } + (void)checked; } void MainWindow::on_actionPreview720_triggered(bool checked) @@ -6036,84 +6058,86 @@ void MainWindow::on_actionSync_triggered() void MainWindow::on_actionUseProxy_triggered(bool checked) { - if (MLT.producer()) { - QDir dir(m_currentFile.isEmpty() ? QDir::tempPath() : QFileInfo(m_currentFile).dir()); - QScopedPointer tmp(new QTemporaryFile(dir.filePath("shotcut-XXXXXX.mlt"))); - tmp->open(); - tmp->close(); - QString fileName = tmp->fileName(); - tmp->remove(); - tmp.reset(); - LOG_DEBUG() << fileName; + // DISABLED: MLT proxy handling + // if (MLT.producer()) { + // QDir dir(m_currentFile.isEmpty() ? QDir::tempPath() : QFileInfo(m_currentFile).dir()); + // QScopedPointer tmp(new QTemporaryFile(dir.filePath("shotcut-XXXXXX.mlt"))); + // tmp->open(); + // tmp->close(); + // QString fileName = tmp->fileName(); + // tmp->remove(); + // tmp.reset(); + // LOG_DEBUG() << fileName; - if (saveXML(fileName)) { - MltXmlChecker checker; + // if (saveXML(fileName)) { + // MltXmlChecker checker; - Settings.setProxyEnabled(checked); - checker.check(fileName); - if (!isXmlRepaired(checker, fileName)) { - QFile::remove(fileName); - return; - } - if (checker.isUpdated()) { - QFile::remove(fileName); - fileName = checker.tempFile().fileName(); - } + // Settings.setProxyEnabled(checked); + // checker.check(fileName); + // if (!isXmlRepaired(checker, fileName)) { + // QFile::remove(fileName); + // return; + // } + // if (checker.isUpdated()) { + // QFile::remove(fileName); + // fileName = checker.tempFile().fileName(); + // } - // Open the temporary file - int result = 0; - { - LongUiTask longTask(checked ? tr("Turn Proxy On") : tr("Turn Proxy Off")); - QFuture future = QtConcurrent::run([=]() { - return MLT.open(QDir::fromNativeSeparators(fileName), - QDir::fromNativeSeparators(m_currentFile)); - }); - result = longTask.wait(tr("Converting"), future); - } - if (!result) { - auto position = m_player->position(); - m_undoStack->clear(); - m_player->stop(); - m_player->setPauseAfterOpen(true); - open(MLT.producer()); - MLT.seek(m_player->position()); - m_player->seek(position); + // // Open the temporary file + // int result = 0; + // { + // LongUiTask longTask(checked ? tr("Turn Proxy On") : tr("Turn Proxy Off")); + // QFuture future = QtConcurrent::run([=]() { + // return MLT.open(QDir::fromNativeSeparators(fileName), + // QDir::fromNativeSeparators(m_currentFile)); + // }); + // result = longTask.wait(tr("Converting"), future); + // } + // if (!result) { + // auto position = m_player->position(); + // m_undoStack->clear(); + // m_player->stop(); + // m_player->setPauseAfterOpen(true); + // open(MLT.producer()); + // MLT.seek(m_player->position()); + // m_player->seek(position); - if (checked && (isPlaylistValid() || isMultitrackValid())) { - // Prompt user if they want to create missing proxies - QMessageBox dialog( - QMessageBox::Question, - qApp->applicationName(), - tr("Do you want to create missing proxies for every file in this project?"), - QMessageBox::No | QMessageBox::Yes, - this); - dialog.setWindowModality(QmlApplication::dialogModality()); - dialog.setDefaultButton(QMessageBox::Yes); - dialog.setEscapeButton(QMessageBox::No); - if (dialog.exec() == QMessageBox::Yes) { - Mlt::Producer producer(playlist()); - if (producer.is_valid()) { - ProxyManager::generateIfNotExistsAll(producer); - } - producer = multitrack(); - if (producer.is_valid()) { - ProxyManager::generateIfNotExistsAll(producer); - } - } - } - } else if (fileName != untitledFileName()) { - showStatusMessage(tr("Failed to open ") + fileName); - emit openFailed(fileName); - } - } else { - ui->actionUseProxy->setChecked(!checked); - showSaveError(); - } - QFile::remove(fileName); - } else { - Settings.setProxyEnabled(checked); - } - m_player->showIdleStatus(); + // if (checked && (isPlaylistValid() || isMultitrackValid())) { + // // Prompt user if they want to create missing proxies + // QMessageBox dialog( + // QMessageBox::Question, + // qApp->applicationName(), + // tr("Do you want to create missing proxies for every file in this project?"), + // QMessageBox::No | QMessageBox::Yes, + // this); + // dialog.setWindowModality(QmlApplication::dialogModality()); + // dialog.setDefaultButton(QMessageBox::Yes); + // dialog.setEscapeButton(QMessageBox::No); + // if (dialog.exec() == QMessageBox::Yes) { + // Mlt::Producer producer(playlist()); + // if (producer.is_valid()) { + // ProxyManager::generateIfNotExistsAll(producer); + // } + // producer = multitrack(); + // if (producer.is_valid()) { + // ProxyManager::generateIfNotExistsAll(producer); + // } + // } + // } + // } else if (fileName != untitledFileName()) { + // showStatusMessage(tr("Failed to open ") + fileName); + // emit openFailed(fileName); + // } + // } else { + // ui->actionUseProxy->setChecked(!checked); + // showSaveError(); + // } + // QFile::remove(fileName); + // } else { + // Settings.setProxyEnabled(checked); + // } + // m_player->showIdleStatus(); + (void)checked; } void MainWindow::on_actionProxyStorageSet_triggered() diff --git a/src/mainwindow.h b/src/mainwindow.h index b110d89..96232a1 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -18,9 +18,6 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include "mltcontroller.h" -#include "mltxmlchecker.h" - #include #include #include @@ -36,94 +33,76 @@ namespace Ui { class MainWindow; } -class Player; -class RecentDock; -class EncodeDock; class JobsDock; -class PlaylistDock; class QUndoStack; class QActionGroup; -class FilterController; -class ScopeController; -class FilesDock; -class FiltersDock; -class TimelineDock; class AutoSaveFile; class QNetworkReply; -class KeyframesDock; -class MarkersDock; -class NotesDock; -class SubtitlesDock; -class ScreenCapture; class MainWindow : public QMainWindow { Q_OBJECT public: - enum LayoutMode { Custom = 0, Logging, Editing, Effects, Color, Audio, PlayerOnly }; + enum LayoutMode { Custom = 0, Logging, Editing, Effects, Color, Audio }; // PlayerOnly removed static MainWindow &singleton(); ~MainWindow(); - void open(Mlt::Producer *producer, bool play = true); + // void open(Mlt::Producer *producer, bool play = true); // DISABLED: MLT bool continueModified(); bool continueJobsRunning(); QUndoStack *undoStack() const; bool saveXML(const QString &filename, bool withRelativePaths = true); static void changeTheme(const QString &theme); - PlaylistDock *playlistDock() const { return m_playlistDock; } - TimelineDock *timelineDock() const { return m_timelineDock; } - FilterController *filterController() const { return m_filterController; } - Mlt::Playlist *playlist() const; - bool isPlaylistValid() const; - Mlt::Producer *multitrack() const; - bool isMultitrackValid() const; + // PlaylistDock *playlistDock() const { return m_playlistDock; } // DISABLED + // TimelineDock *timelineDock() const { return m_timelineDock; } // DISABLED + // FilterController *filterController() const { return m_filterController; } // DISABLED + // Mlt::Playlist *playlist() const; // DISABLED: MLT + // bool isPlaylistValid() const; // DISABLED: MLT + // Mlt::Producer *multitrack() const; // DISABLED: MLT + // bool isMultitrackValid() const; // DISABLED: MLT void doAutosave(); void setFullScreen(bool isFullScreen); QString untitledFileName() const; - void setProfile(const QString &profile_name); + // void setProfile(const QString &profile_name); // DISABLED: video QString fileName() const { return m_currentFile; } - bool isSourceClipMyProject(QString resource = MLT.resource(), bool withDialog = true); - bool keyframesDockIsVisible() const; + // bool isSourceClipMyProject(QString resource = MLT.resource(), bool withDialog = true); // DISABLED: MLT + // bool keyframesDockIsVisible() const; // DISABLED: video void keyPressEvent(QKeyEvent *); void keyReleaseEvent(QKeyEvent *); void hideSetDataDirectory(); - QMenu *customProfileMenu() const { return m_customProfileMenu; } - QAction *actionAddCustomProfile() const; - QAction *actionProfileRemove() const; - QActionGroup *profileGroup() const { return m_profileGroup; } - void buildVideoModeMenu(QMenu *topMenu, - QMenu *&customMenu, - QActionGroup *group, - QAction *addAction, - QAction *removeAction); - void newProject(const QString &filename, bool isProjectFolder = false); - void addCustomProfile(const QString &name, QMenu *menu, QAction *action, QActionGroup *group); - void removeCustomProfiles(const QStringList &profiles, QDir &dir, QMenu *menu, QAction *action); - QUuid timelineClipUuid(int trackIndex, int clipIndex); - void replaceInTimeline(const QUuid &uuid, Mlt::Producer &producer); - void replaceAllByHash(const QString &hash, Mlt::Producer &producer, bool isProxy = false); + // QMenu *customProfileMenu() const { return m_customProfileMenu; } // DISABLED: video + // QAction *actionAddCustomProfile() const; // DISABLED: video + // QAction *actionProfileRemove() const; // DISABLED: video + // QActionGroup *profileGroup() const { return m_profileGroup; } // DISABLED: video + // void buildVideoModeMenu(...); // DISABLED: video + // void newProject(const QString &filename, bool isProjectFolder = false); // DISABLED: video + // void addCustomProfile(...); // DISABLED: video + // void removeCustomProfiles(...); // DISABLED: video + // QUuid timelineClipUuid(int trackIndex, int clipIndex); // DISABLED: video + // void replaceInTimeline(const QUuid &uuid, Mlt::Producer &producer); // DISABLED: MLT + // void replaceAllByHash(const QString &hash, Mlt::Producer &producer, bool isProxy = false); // DISABLED: MLT bool isClipboardNewer() const { return m_clipboardUpdatedAt > m_sourceUpdatedAt; } - int mltIndexForTrack(int trackIndex) const; - int bottomVideoTrackIndex() const; - void cropSource(const QRectF &rect); - void getMarkerRange(int position, int *start, int *end); - void getSelectionRange(int *start, int *end); - Mlt::Playlist *binPlaylist(); - void showInFiles(const QString &filePath); - void turnOffHardwareDecoder(); + // int mltIndexForTrack(int trackIndex) const; // DISABLED: video + // int bottomVideoTrackIndex() const; // DISABLED: video + // void cropSource(const QRectF &rect); // DISABLED: video + // void getMarkerRange(int position, int *start, int *end); // DISABLED: video + // void getSelectionRange(int *start, int *end); // DISABLED: video + // Mlt::Playlist *binPlaylist(); // DISABLED: MLT + // void showInFiles(const QString &filePath); // DISABLED: video + // void turnOffHardwareDecoder(); // DISABLED: video signals: - void audioChannelsChanged(); - void processingModeChanged(); - void producerOpened(bool withReopen = true); - void profileChanged(); - void openFailed(QString); + // void audioChannelsChanged(); // DISABLED: video + // void processingModeChanged(); // DISABLED: video + // void producerOpened(bool withReopen = true); // DISABLED: video + // void profileChanged(); // DISABLED: video + // void openFailed(QString); // DISABLED: video void aboutToShutDown(); - void renameRequested(); - void serviceInChanged(int delta, Mlt::Service *); - void serviceOutChanged(int delta, Mlt::Service *); + // void renameRequested(); // DISABLED: video + // void serviceInChanged(int delta, Mlt::Service *); // DISABLED: MLT + // void serviceOutChanged(int delta, Mlt::Service *); // DISABLED: MLT protected: MainWindow(); @@ -139,86 +118,86 @@ private: void registerDebugCallback(); void connectUISignals(); void setupAndConnectUndoStack(); - void setupAndConnectPlayerWidget(); + // void setupAndConnectPlayerWidget(); // DISABLED void setupLayoutSwitcher(); - void centerLayoutInRemainingToolbarSpace(); - void setupAndConnectDocks(); - void setupMenuFile(); - void setupMenuView(); - void connectVideoWidgetSignals(); + // void centerLayoutInRemainingToolbarSpace(); // DISABLED + // void setupAndConnectDocks(); // DISABLED: mostly video + // void setupMenuFile(); // DISABLED + // void setupMenuView(); // DISABLED + // void connectVideoWidgetSignals(); // DISABLED void setupSettingsMenu(); void setupOpenOtherMenu(); void setupActions(); - QAction *addProfile(QActionGroup *actionGroup, const QString &desc, const QString &name); - QAction *addLayout(QActionGroup *actionGroup, const QString &name); - void readPlayerSettings(); + // QAction *addProfile(...); // DISABLED: video + // QAction *addLayout(...); // DISABLED: video + // void readPlayerSettings(); // DISABLED: video void readWindowSettings(); void writeSettings(); - void configureVideoWidget(); + // void configureVideoWidget(); // DISABLED: video void setCurrentFile(const QString &filename); void updateWindowTitle(); - void changeAudioChannels(bool checked, int channels); - void changeDeinterlacer(bool checked, const char *method); - void changeInterpolation(bool checked, const char *method); + // void changeAudioChannels(bool checked, int channels); // DISABLED: video + // void changeDeinterlacer(bool checked, const char *method); // DISABLED: video + // void changeInterpolation(bool checked, const char *method); // DISABLED: video bool checkAutoSave(QString &url); - bool saveConvertedXmlFile(MltXmlChecker &checker, QString &fileName); - bool saveRepairedXmlFile(MltXmlChecker &checker, QString &fileName); - void setAudioChannels(int channels); - void setProcessingMode(ShotcutSettings::ProcessingMode mode); - void showSaveError(); - void setPreviewScale(int scale); - void setVideoModeMenu(); - void resetVideoModeMenu(); - void resetDockCorners(); - void showIncompatibleProjectMessage(const QString &shotcutVersion); + // bool saveConvertedXmlFile(MltXmlChecker &checker, QString &fileName); // DISABLED: MLT + // bool saveRepairedXmlFile(MltXmlChecker &checker, QString &fileName); // DISABLED: MLT + // void setAudioChannels(int channels); // DISABLED: video + // void setProcessingMode(ShotcutSettings::ProcessingMode mode); // DISABLED: video + // void showSaveError(); // DISABLED + // void setPreviewScale(int scale); // DISABLED: video + // void setVideoModeMenu(); // DISABLED: video + // void resetVideoModeMenu(); // DISABLED: video + // void resetDockCorners(); // DISABLED: video + // void showIncompatibleProjectMessage(const QString &shotcutVersion); // DISABLED void restartAfterChangeTheme(); void backup(); void backupPeriodically(); - bool confirmProfileChange(); - bool confirmRestartExternalMonitor(); - void resetFilterMenuIfNeeded(); + // bool confirmProfileChange(); // DISABLED: video + // bool confirmRestartExternalMonitor(); // DISABLED: video + // void resetFilterMenuIfNeeded(); // DISABLED: video Ui::MainWindow *ui; - Player *m_player; - QDockWidget *m_propertiesDock; - RecentDock *m_recentDock; - EncodeDock *m_encodeDock; + // Player *m_player; // DISABLED + // QDockWidget *m_propertiesDock; // DISABLED + // RecentDock *m_recentDock; // DISABLED + // EncodeDock *m_encodeDock; // DISABLED JobsDock *m_jobsDock; - PlaylistDock *m_playlistDock; - TimelineDock *m_timelineDock; + // PlaylistDock *m_playlistDock; // DISABLED + // TimelineDock *m_timelineDock; // DISABLED QString m_currentFile; - bool m_isKKeyPressed; + // bool m_isKKeyPressed; // DISABLED QUndoStack *m_undoStack; - QDockWidget *m_historyDock; - QActionGroup *m_profileGroup; - QActionGroup *m_externalGroup; - QActionGroup *m_decklinkGammaGroup{nullptr}; - QActionGroup *m_keyerGroup; - QActionGroup *m_layoutGroup; - QActionGroup *m_previewScaleGroup; - FiltersDock *m_filtersDock; - FilterController *m_filterController; - ScopeController *m_scopeController; - QMenu *m_customProfileMenu; - QMenu *m_decklinkGammaMenu{nullptr}; - QMenu *m_keyerMenu; - QStringList m_multipleFiles; - bool m_multipleFilesLoading; - bool m_isPlaylistLoaded; + // QDockWidget *m_historyDock; // DISABLED + // QActionGroup *m_profileGroup; // DISABLED: video + // QActionGroup *m_externalGroup; // DISABLED: video + // QActionGroup *m_decklinkGammaGroup{nullptr}; // DISABLED: video + // QActionGroup *m_keyerGroup; // DISABLED: video + // QActionGroup *m_layoutGroup; // DISABLED: video + // QActionGroup *m_previewScaleGroup; // DISABLED: video + // FiltersDock *m_filtersDock; // DISABLED: video + // FilterController *m_filterController; // DISABLED: video + // ScopeController *m_scopeController; // DISABLED: video + // QMenu *m_customProfileMenu; // DISABLED: video + // QMenu *m_decklinkGammaMenu{nullptr}; // DISABLED: video + // QMenu *m_keyerMenu; // DISABLED: video + // QStringList m_multipleFiles; // DISABLED: video + // bool m_multipleFilesLoading; // DISABLED: video + // bool m_isPlaylistLoaded; // DISABLED: video QActionGroup *m_languagesGroup; QSharedPointer m_autosaveFile; QMutex m_autosaveMutex; QTimer m_autosaveTimer; int m_exitCode; - QScopedPointer m_statusBarAction; + // QScopedPointer m_statusBarAction; // DISABLED QNetworkAccessManager m_network; - QString m_upgradeUrl; - KeyframesDock *m_keyframesDock; + // QString m_upgradeUrl; // DISABLED + // KeyframesDock *m_keyframesDock; // DISABLED: video QDateTime m_clipboardUpdatedAt; QDateTime m_sourceUpdatedAt; - MarkersDock *m_markersDock; - NotesDock *m_notesDock; - SubtitlesDock *m_subtitlesDock; + // MarkersDock *m_markersDock; // DISABLED: video + // NotesDock *m_notesDock; // DISABLED: video + // SubtitlesDock *m_subtitlesDock; // DISABLED: video std::unique_ptr m_producerWidget; FilesDock *m_filesDock; ScreenCapture *m_screenCapture; diff --git a/src/settings.cpp b/src/settings.cpp index 163ae91..c38fc4e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -126,20 +126,14 @@ void ShotcutSettings::migrateLayout() void ShotcutSettings::log() { LOG_INFO() << "language" << language(); - LOG_INFO() << "deinterlacer" << playerDeinterlacer(); - LOG_INFO() << "external monitor" << playerExternal(); - LOG_INFO() << "GPU processing" << playerGPU(); - LOG_INFO() << "interpolation" << playerInterpolation(); - LOG_INFO() << "video mode" << playerProfile(); - LOG_INFO() << "realtime" << playerRealtime(); - LOG_INFO() << "audio channels" << playerAudioChannels(); -#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) - if (::qEnvironmentVariableIsSet("SDL_AUDIODRIVER")) { - LOG_INFO() << "audio driver" << ::qgetenv("SDL_AUDIODRIVER"); - } else { - LOG_INFO() << "audio driver" << playerAudioDriver(); - } -#endif + // Video settings logging disabled + // LOG_INFO() << "deinterlacer" << playerDeinterlacer(); + // LOG_INFO() << "external monitor" << playerExternal(); + // LOG_INFO() << "GPU processing" << playerGPU(); + // LOG_INFO() << "interpolation" << playerInterpolation(); + // LOG_INFO() << "video mode" << playerProfile(); + // LOG_INFO() << "realtime" << playerRealtime(); + // LOG_INFO() << "audio channels" << playerAudioChannels(); } QString ShotcutSettings::language() const diff --git a/src/util.cpp b/src/util.cpp index fcb5dc1..f29cca3 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -17,17 +17,17 @@ #include "util.h" -#include "FlatpakWrapperGenerator.h" #include "Logger.h" -#include "dialogs/transcodedialog.h" #include "mainwindow.h" -#include "proxymanager.h" -#include "qmltypes/qmlapplication.h" #include "settings.h" -#include "shotcut_mlt_properties.h" -#include "transcoder.h" -#include -#include +// #include "FlatpakWrapperGenerator.h" // DISABLED +// #include "dialogs/transcodedialog.h" // DISABLED +// #include "proxymanager.h" // DISABLED +// #include "qmltypes/qmlapplication.h" // DISABLED +// #include "shotcut_mlt_properties.h" // DISABLED: MLT +// #include "transcoder.h" // DISABLED: MLT +// #include // DISABLED: MLT +// #include // DISABLED: MLT #include #include @@ -153,6 +153,7 @@ bool Util::warnIfNotWritable(const QString &filePath, QWidget *parent, const QSt return false; } +/* DISABLED: MLT producer title QString Util::producerTitle(const Mlt::Producer &producer) { QString result; @@ -169,6 +170,7 @@ QString Util::producerTitle(const Mlt::Producer &producer) return QString::fromUtf8(p.get(kShotcutCaptionProperty)); return Util::baseName(ProxyManager::resource(p)); } +*/ QString Util::removeFileScheme(QUrl &url, bool fromPercentEncoding) { @@ -363,6 +365,7 @@ QTemporaryFile *Util::writableTemporaryFile(const QString &filePath, const QStri } } +/* DISABLED: MLT applyCustomProperties void Util::applyCustomProperties(Mlt::Producer &destination, Mlt::Producer &source, int in, int out) { Mlt::Properties p(destination); @@ -419,6 +422,7 @@ void Util::applyCustomProperties(Mlt::Producer &destination, Mlt::Producer &sour } destination.set_in_and_out(in, out); } +*/ QString Util::getFileHash(const QString &path) { @@ -441,6 +445,7 @@ QString Util::getFileHash(const QString &path) return QString(); } +/* DISABLED: MLT getHash QString Util::getHash(Mlt::Properties &properties) { QString hash = properties.get(kShotcutHashProperty); @@ -460,6 +465,7 @@ QString Util::getHash(Mlt::Properties &properties) } return hash; } +*/ bool Util::hasDriveLetter(const QString &path) {