Files
imajviewer/docs/rapor-gezinme-ayarlar-print.md

81 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rapor — Gezinme Okları, Ayarlar (Sıralama) ve Yazdırma
Tarih: 2026-08-06
Durum: Uygulandı
## Amaç
Klavyede zaten çalışan sol/sağ ok tuşu gezinmesine görsel karşılık eklemek;
ayarlar (gear) penceresiyle klasör sıralamasını kullanıcıya bırakmak; resmi
yazıcıya göndermek.
## Yapılan Değişiklikler
### 1. Gezinme okları (görsel arayüz)
- Sol/sağ alt köşeye sade yuvarlak ok butonları eklendi (`_NavButton`,
`lib/screens/viewer_screen.dart`).
- Normalde görünmez; mouse görüntü alanına girince belirir
(`MouseRegion``_controlsVisible`).
- Hover'da kırmızı arka plan (kapatma butonuyla aynı stil).
- Tooltip yok (kullanıcı istemedi).
- `ImageManager.instance.previousImage()/nextImage()` çağırır — klavye
kısayoluyla aynı yolu kullanır.
### 2. PITFALL — MouseRegion flicker döngüsü (çözüldü)
İlk uygulamada MouseRegion yalnızca resim alanını sarıyordu, butonlar
Stack'te üstte ayrı duruyordu. Mouse butonun üzerine gelince hit-test
butona gidiyor → MouseRegion `onExit` → butonlar kayboluyor → mouse tekrar
resim alanına düşüyor → `onEnter` → sonsuz yanıp sönme ve tıklanamama.
Çözüm: `MouseRegion`'ı **tüm Stack'in** üzerine taşı (DropTarget'ın
çocuğu). Butonlar da Stack içinde kaldığı için onların üzerindeyken
bölgeden çıkılmaz; `onExit` yalnızca pencere alanı terk edilince tetiklenir.
### 3. Gear (Ayarlar) butonu
- İlk olarak görüntü alanının sol üstüne kondu; kullanıcı "title yüzünden
aşağıda çıkıyor" deyince **title bar'ın soluna** taşındı
(`CustomTitleBar(onSettings: ...)`, `lib/widgets/custom_title_bar.dart`).
- Title bar `visible` parametresiyle `_controlsVisible`'a bağlandı: mouse
resmin dışındayken title (gear dahil) saydam (AnimatedOpacity 0), mouse
girince görünür.
- Hover arka planı kırmızı (`_BarButton` varsayılanı).
### 4. Ayarlar penceresi (`_showSettings`)
Gear'a tıklayınca açılan AlertDialog:
- **Sıralama**: Zamana göre / İsme göre (RadioListTile).
`ImageManager.sortByName``setGalleryFromPaths` içinde sıralama
karşılaştırıcısı buna göre değişir; isim sıralaması `toLowerCase`
karşılaştırma ile (büyük/küçük harf duyarsız). Mod değişince mevcut
galeri `setGalleryFromPaths([_images[_currentIndex]])` ile yeniden
kurulur (açık resim korunur).
- Uygulamanın amacı (kısa paragraf).
- Kısayollar listesi (F11 satırı kaldırıldı — tam ekran özelliği yok).
### 5. Yazdırma (`_printImage`)
- Yeni bağımlılıklar: `printing: ^5.13.4`, `pdf: ^3.11.1` (Linux dahil
masaüstü destekli).
- Buton ayarlar penceresinin actions kısmında ("Yazdır"); ayrı köşe butonu
değil (kullanıcı istediği yerleşim).
- Akış: `File.readAsBytes``pw.MemoryImage``pw.Document` A4 sayfa,
`BoxFit.contain``Printing.layoutPdf` (sistem yazıcı dialogu).
### 6. `_BarButton.hoverColor` kaldırıldı
Gear title'a taşınıp tek hover rengi (kırmızı) kaldığı için opsiyonel
parametre gereksizleşti; analyze uyarısı (unused_element_parameter)
temizlendi.
## Doğrulama
- `flutter analyze`: 21 info (pre-existing baseline; yeni hata yok).
- `flutter build linux --release`: ✓ Built.
- `./install.sh` (debug bundle silinip release kuruldu): exit 0.
- `bash dist/rebuild-deb.sh`: `dist/imajviewer_1.0.1_amd64.deb` (11M) üretildi.
- Görsel davranış kullanıcı tarafından manuel test edildi (oklar,
gear/title saydamlığı, hover renkleri, sıralama, print dialogu).