Commit Graph

3 Commits

Author SHA1 Message Date
29cb993b7b Fix cross-thread : QTimer.singleShot au lieu de pyqtSignal
pyqtSignal.emit() depuis un thread Python standard ne fonctionne pas.
Utilise QTimer.singleShot(0, callback) qui est thread-safe et
exécute le callback dans le thread principal Qt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 22:55:31 +01:00
d8d7cbde7c Config admin complète + IMAP polling
Config admin :
- Serveur upload : IP d'écoute, port, URL publique (QR code)
- Email IMAP : activer/désactiver, serveur, port, user, password,
  dossier, intervalle de polling
- Checkbox pour activer IMAP

Service IMAP :
- Thread daemon, polling configurable (défaut 30s)
- Connexion IMAP SSL, récupère mails UNSEEN
- Extrait les PJ photos (jpg/png/etc.)
- Sauvegarde dans data/photos/, notifie l'app via signal Qt
- Bouton Email passe au vert + Continuer quand photos reçues

main.py :
- Lit la config pour IP/port du serveur upload
- Démarre IMAP polling si activé dans la config

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 22:34:37 +01:00
532f8d91c0 Serveur upload Flask + page web mobile + intégration PyQt
- Serveur Flask en thread daemon (port 80 ou 8080 avec --no-root)
- Page upload responsive : drag&drop, multi-fichiers, prévisualisations
- Barre de progression, feedback succès/erreur
- Photos stockées dans data/photos/
- Signal photos_received → notify_qr_photos() sur l'écran d'accueil
- Ajout flask aux requirements

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 22:30:02 +01:00