feat: i18n (en/tr), zoom orijinal cozunurluk + max 20x + gaplessPlayback, app id com.softmediadesign.imajviewer, CI analyze+test
Build & Release / build-linux (push) Has been cancelled
Build & Release / build-windows (push) Has been cancelled
Build & Release / create-release (push) Has been cancelled

This commit is contained in:
Alhan committed 2026-08-07 00:16:48 +03:00
1 parent b9e433d032
commit 504d84f6f6
19 files changed
+408 -48

No files matched your search

+28 -34
View File
@@ -13,6 +13,7 @@ import '../widgets/image_canvas.dart';
import '../widgets/window_resize_zones.dart';
import '../shortcuts/app_shortcuts.dart';
import '../services/window_persistence.dart';
import '../l10n/app_localizations.dart';
class ViewerScreen extends StatefulWidget {
final List<String> initialFiles;
@@ -95,22 +96,22 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
builder: (context) => StatefulBuilder(
builder: (context, setDialogState) => AlertDialog(
backgroundColor: const Color(0xFF2a2a2a),
title: const Text('Ayarlar',
style: TextStyle(color: Colors.white, fontSize: 18)),
title: Text(AppLocalizations.of(context)!.settingsTitle,
style: const TextStyle(color: Colors.white, fontSize: 18)),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('Sıralama',
style: TextStyle(color: Colors.white70, fontSize: 13)),
Text(AppLocalizations.of(context)!.sortBy,
style: const TextStyle(color: Colors.white70, fontSize: 13)),
RadioListTile<bool>(
value: false,
groupValue: ImageManager.instance.sortByName,
dense: true,
activeColor: Colors.blueAccent,
title: const Text('Zamana göre',
style: TextStyle(color: Colors.white, fontSize: 14)),
title: Text(AppLocalizations.of(context)!.sortByTime,
style: const TextStyle(color: Colors.white, fontSize: 14)),
onChanged: (v) {
ImageManager.instance.setSortByName(v!);
setDialogState(() {});
@@ -121,8 +122,8 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
groupValue: ImageManager.instance.sortByName,
dense: true,
activeColor: Colors.blueAccent,
title: const Text('İsme göre',
style: TextStyle(color: Colors.white, fontSize: 14)),
title: Text(AppLocalizations.of(context)!.sortByName,
style: const TextStyle(color: Colors.white, fontSize: 14)),
onChanged: (v) {
ImageManager.instance.setSortByName(v!);
setDialogState(() {});
@@ -131,25 +132,17 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
const Divider(color: Colors.white24, height: 24),
const Text('imajViewer', style: TextStyle(color: Colors.white, fontSize: 15)),
const SizedBox(height: 4),
const Text(
'Ultra hafif ve hızlı resim görüntüleyici. '
'Görselleri açın, gezinti için okları veya klavye tuşlarını kullanın.',
style: TextStyle(color: Colors.white70, fontSize: 13, height: 1.5),
Text(
AppLocalizations.of(context)!.appDescription,
style: const TextStyle(color: Colors.white70, fontSize: 13, height: 1.5),
),
const SizedBox(height: 12),
const Text('Kısayollar',
style: TextStyle(color: Colors.white70, fontSize: 13)),
Text(AppLocalizations.of(context)!.shortcuts,
style: const TextStyle(color: Colors.white70, fontSize: 13)),
const SizedBox(height: 4),
const Text(
'• Sol/Sağ ok — önceki/sonraki resim\n'
'• Ctrl+Q — pencereyi kapat\n'
'• Ctrl+Shift+Q — tüm pencereleri kapat\n'
'• Çift tık — doldur/sığdır geçişi\n'
'• Sağ tık sürükle — kontrast\n'
'• Shift+sağ tık — döndür\n'
'• Ctrl+sağ tık — doygunluk\n'
'• Ctrl+Shift+sağ tık — parlaklık',
style: TextStyle(color: Colors.white70, fontSize: 13, height: 1.6),
Text(
AppLocalizations.of(context)!.shortcutsList,
style: const TextStyle(color: Colors.white70, fontSize: 13, height: 1.6),
),
],
),
@@ -161,12 +154,12 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
_printImage();
},
icon: const Icon(Icons.print, color: Colors.white70, size: 18),
label: const Text('Yazdır',
style: TextStyle(color: Colors.white70)),
label: Text(AppLocalizations.of(context)!.print,
style: const TextStyle(color: Colors.white70)),
),
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('Kapat', style: TextStyle(color: Colors.white70)),
child: Text(AppLocalizations.of(context)!.close, style: const TextStyle(color: Colors.white70)),
),
],
),
@@ -232,15 +225,16 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
? ImageCanvas(
filePath: ImageManager.instance.currentImagePath,
)
: const Center(
: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.image, size: 64, color: Colors.white24),
SizedBox(height: 16),
Text('Resimleri buraya sürükleyin\nveya Ctrl+O ile açın',
const Icon(Icons.image, size: 64, color: Colors.white24),
const SizedBox(height: 16),
Text(AppLocalizations.of(context)!.dragDropHint,
key: const Key('dragDropHint'),
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white38, fontSize: 16)),
style: const TextStyle(color: Colors.white38, fontSize: 16)),
],
),
),
@@ -280,8 +274,8 @@ class _ViewerScreenState extends State<ViewerScreen> with WindowListener {
borderRadius: BorderRadius.circular(16),
border: Border.all(color: Colors.blueAccent, width: 2),
),
child: const Text('Bırakın',
style: TextStyle(color: Colors.white, fontSize: 24)),
child: Text(AppLocalizations.of(context)!.dropHere,
style: const TextStyle(color: Colors.white, fontSize: 24)),
),
),
),