feat: klasor tabanli galeri, brightness efekti (Ctrl+Shift+sag tik), .deb guncellendi
This commit is contained in:
1 parent
56ab4b5495
commit
d4c243b445
9 files changed
+249
-37
No files matched your search
@@ -0,0 +1,65 @@
|
||||
# Galeri: Klasör Tabanlı Gezinme — Rapor ve Plan
|
||||
|
||||
Tarih: 2026-08-03
|
||||
Durum: Uygulandı (2026-08-03)
|
||||
|
||||
## 1. Mevcut Sorunun Analizi
|
||||
|
||||
### RAM şişmesi — `lib/services/image_manager.dart`
|
||||
- `addImages()` her eklenen yol için `precacheImage(FileImage(...))` çağırıyor (satır 33-35).
|
||||
- Sonuç: toplu sürüklemede tüm resimler tam çözünürlükte decode edilip ImageCache'e yazılıyor.
|
||||
- Örnek: 12MP JPEG dekode ≈ 48MB RGBA; 30 resim ≈ 1.4GB.
|
||||
- Decode UI thread'inde yapılıyor → pencere donması, "çok pencere açmış gibi" hissi.
|
||||
- `configureCache()` tavanı: 1000 görsel / 1GB (satır 62-65).
|
||||
|
||||
### Sağ tık efektlerinde çökme — `lib/widgets/image_canvas.dart`
|
||||
- Her pointer move'da `setState` → `ColorFiltered` tüm görseli yeniden boyuyor (satır 224-240).
|
||||
- Bellek zaten yüksekken + VM'de yazılımsal render → çökme en çok burada görülüyor.
|
||||
- Kök neden RAM şişmesi; o çözülünce bu senaryo da hafifler.
|
||||
|
||||
## 2. Alınan Kararlar (kullanıcı onayı)
|
||||
|
||||
1. **Precache tamamen kaldırılacak** — hiçbir resim önceden decode edilmeyecek.
|
||||
2. Görüntüleme anında decode: sıradaki resme geçişte yüklenene kadar beklenir.
|
||||
3. **RAM kısıtlaması yok** — cache limitlerine dokunulmayacak, daraltılmayacak.
|
||||
4. Önceki resim cache'ten düşebilir (zorunlu tutma yok). Precache olmadığı için
|
||||
bellekte aynı anda yalnızca açık olan resim(ler) durur; kabarık galeri listesi
|
||||
sorun yaratmaz.
|
||||
|
||||
## 3. Yeni Özellik — Klasör Tabanlı Galeri
|
||||
|
||||
Amaç: resimleri topluca seçip sürükleyerek galeri kurmak yerine, açılan herhangi
|
||||
bir resmin bulunduğu dizin otomatik galeri olsun.
|
||||
|
||||
Davranış:
|
||||
- Bir resim açıldığında (çift tık, CLI argümanı, sürükle-bırak) bulunduğu dizin taranır.
|
||||
- Dizindeki desteklenen imaj dosyaları (png/jpg/jpeg/jfif/jpe/webp/bmp/gif/wbmp)
|
||||
galeri listesi olarak set edilir.
|
||||
- Açılan resim listedeki konumunu bulur ve o an gösterilir.
|
||||
- Ctrl+Tab / Ctrl+Shift+Tab ile klasör içinde ileri-geri gezilir.
|
||||
- Mevcut pencere başına singleton yapısı korunur — her pencere ayrı process,
|
||||
her biri kendi klasör galerisini kurar.
|
||||
|
||||
### Sıralama
|
||||
- Dosya yöneticisinin (Thunar/PCManFM/Nautilus) klasör sort'u OS seviyesinde
|
||||
okunamaz — uygulama içi ayardır, dosya sisteminde saklanmaz. Bu seçenek pratikte yok.
|
||||
- Bu yüzden **tarihe göre** sıralanacak (dosyanın değiştirilme zamanı).
|
||||
- Yön: **en yeni önce, en eski sonra** (azalan).
|
||||
|
||||
## 4. Uygulama (uygulandı)
|
||||
|
||||
- `lib/services/image_manager.dart` — precache döngüsü ve `buildContext` kaldırıldı.
|
||||
`addImages` yerine `setGalleryFromPaths(paths)` geldi: ilk geçerli resmin klasörünü
|
||||
tarar, desteklenenleri filtreler, değiştirilme zamanına göre en yeni önce sıralar,
|
||||
açılan resmi o anki konum yapar. (Aynı zaman damgasında dosya adına göre sabit sıra)
|
||||
- `lib/services/file_handler.dart` — `addImages` çağrıları `setGalleryFromPaths` oldu
|
||||
(Ctrl+O ve sürükle-bırak aynı akıştan geçiyor).
|
||||
- `lib/screens/viewer_screen.dart` — `buildContext` ataması kaldırıldı (precache yok).
|
||||
- RAM kısıtlaması eklenmedi — `configureCache` aynen duruyor.
|
||||
|
||||
## 5. Açık Sorular
|
||||
|
||||
Çözüldü:
|
||||
1. ~~Tarih sıralama yönü~~ → **en yeni önce, en eski sonra**
|
||||
2. ~~Pencereye birden fazla resim sürüklenirse~~ → **sürüklenen resmin klasörüne geçilir**
|
||||
(galeri açıkken yeni resim gelirse de aynı: o resmin klasörü yeni galeri olur)
|
||||
Reference in new issue
Block a user