feat: gezinme oklari (hover), ayarlar penceresi (zaman/isme gore siralama), yazdirma (printing paketi), title hover saydamligi; .deb guncellendi

This commit is contained in:
Alhan
2026-08-06 03:43:48 +03:00
parent 185653f34e
commit f3a5aeb604
12 changed files with 431 additions and 38 deletions

View File

@@ -2,6 +2,7 @@
| Tarih | Dosya | Konu |
|---|---|---|
| 2026-08-06 | [rapor-gezinme-ayarlar-print.md](rapor-gezinme-ayarlar-print.md) | **Rapor** — gezinme okları (hover), ayarlar/gear (sıralama), yazdırma (printing paketi) |
| 2026-08-06 | [rapor-sag-tik-donma-analizi.md](rapor-sag-tik-donma-analizi.md) | **Rapor** — sağ tuş efektlerinde donma analizi + slider UI değerlendirmesi |
| 2026-08-03 | [zoom-clamp-mekanizmasi.md](zoom-clamp-mekanizmasi.md) | **Düzeltme**`_vpSize` sıfırlama bug'ı: çift tıklama sonrası zoom ölümü/pan serbestliği |
| 2026-08-03 | [performance_llvmpipe_issue.md](performance_llvmpipe_issue.md) | **Rapor** — llvmpipe donma analizi, kare hızı throttle, ölçüm sonuçları |

View File

@@ -0,0 +1,80 @@
# 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).