pattern switches

This commit is contained in:
Thibault Deckers 2023-08-15 23:59:29 +02:00
parent 768aa6e017
commit 7afbdfaa84
29 changed files with 458 additions and 826 deletions

View file

@ -68,14 +68,12 @@ class MimeFilter extends CollectionFilter {
@override @override
String getLabel(BuildContext context) { String getLabel(BuildContext context) {
switch (mime) { final l10n = context.l10n;
case MimeTypes.anyImage: return switch (mime) {
return context.l10n.filterMimeImageLabel; MimeTypes.anyImage => l10n.filterMimeImageLabel,
case MimeTypes.anyVideo: MimeTypes.anyVideo => l10n.filterMimeVideoLabel,
return context.l10n.filterMimeVideoLabel; _ => _label,
default: };
return _label;
}
} }
@override @override

View file

@ -60,16 +60,13 @@ class MissingFilter extends CollectionFilter {
@override @override
String getLabel(BuildContext context) { String getLabel(BuildContext context) {
switch (metadataType) { final l10n = context.l10n;
case _date: return switch (metadataType) {
return context.l10n.filterNoDateLabel; _date => l10n.filterNoDateLabel,
case _fineAddress: _fineAddress => l10n.filterNoAddressLabel,
return context.l10n.filterNoAddressLabel; _title => l10n.filterNoTitleLabel,
case _title: _ => metadataType,
return context.l10n.filterNoTitleLabel; };
default:
return metadataType;
}
} }
@override @override

View file

@ -86,16 +86,13 @@ class PlaceholderFilter extends CollectionFilter {
@override @override
String getLabel(BuildContext context) { String getLabel(BuildContext context) {
switch (placeholder) { final l10n = context.l10n;
case _country: return switch (placeholder) {
return context.l10n.tagPlaceholderCountry; _country => l10n.tagPlaceholderCountry,
case _state: _state => l10n.tagPlaceholderState,
return context.l10n.tagPlaceholderState; _place => l10n.tagPlaceholderPlace,
case _place: _ => placeholder,
return context.l10n.tagPlaceholderPlace; };
default:
return placeholder;
}
} }
@override @override

View file

@ -80,22 +80,16 @@ class TypeFilter extends CollectionFilter {
@override @override
String getLabel(BuildContext context) { String getLabel(BuildContext context) {
switch (itemType) { final l10n = context.l10n;
case _animated: return switch (itemType) {
return context.l10n.filterTypeAnimatedLabel; _animated => l10n.filterTypeAnimatedLabel,
case _motionPhoto: _motionPhoto => l10n.filterTypeMotionPhotoLabel,
return context.l10n.filterTypeMotionPhotoLabel; _panorama => l10n.filterTypePanoramaLabel,
case _panorama: _raw => l10n.filterTypeRawLabel,
return context.l10n.filterTypePanoramaLabel; _sphericalVideo => l10n.filterTypeSphericalVideoLabel,
case _raw: _geotiff => l10n.filterTypeGeotiffLabel,
return context.l10n.filterTypeRawLabel; _ => itemType,
case _sphericalVideo: };
return context.l10n.filterTypeSphericalVideoLabel;
case _geotiff:
return context.l10n.filterTypeGeotiffLabel;
default:
return itemType;
}
} }
@override @override

View file

@ -10,25 +10,19 @@ class BurstPatterns {
]; ];
static String getName(String pattern) { static String getName(String pattern) {
switch (pattern) { return switch (pattern) {
case samsung: samsung => 'Samsung',
return 'Samsung'; sony => 'Sony',
case sony: _ => pattern,
return 'Sony'; };
default:
return pattern;
}
} }
static String getExample(String pattern) { static String getExample(String pattern) {
switch (pattern) { return switch (pattern) {
case samsung: samsung => '20151021_072800_007',
return '20151021_072800_007'; sony => 'DSC_0007_BURST20151021072800123',
case sony: _ => '?',
return 'DSC_0007_BURST20151021072800123'; };
default:
return '?';
}
} }
static const byManufacturer = { static const byManufacturer = {

View file

@ -5,27 +5,22 @@ import 'package:flutter/widgets.dart';
extension ExtraChipActionView on ChipAction { extension ExtraChipActionView on ChipAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case ChipAction.goToAlbumPage: return switch (this) {
return context.l10n.chipActionGoToAlbumPage; ChipAction.goToAlbumPage => l10n.chipActionGoToAlbumPage,
case ChipAction.goToCountryPage: ChipAction.goToCountryPage => l10n.chipActionGoToCountryPage,
return context.l10n.chipActionGoToCountryPage; ChipAction.goToPlacePage => l10n.chipActionGoToPlacePage,
case ChipAction.goToPlacePage: ChipAction.goToTagPage => l10n.chipActionGoToTagPage,
return context.l10n.chipActionGoToPlacePage; ChipAction.ratingOrGreater ||
case ChipAction.goToTagPage: ChipAction.ratingOrLower =>
return context.l10n.chipActionGoToTagPage;
case ChipAction.ratingOrGreater:
case ChipAction.ratingOrLower:
// different data depending on state // different data depending on state
return toString(); toString(),
case ChipAction.reverse: ChipAction.reverse =>
// different data depending on state // different data depending on state
return context.l10n.chipActionFilterOut; l10n.chipActionFilterOut,
case ChipAction.hide: ChipAction.hide => l10n.chipActionHide,
return context.l10n.chipActionHide; ChipAction.lockVault => l10n.chipActionLock,
case ChipAction.lockVault: };
return context.l10n.chipActionLock;
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());

View file

@ -5,106 +5,69 @@ import 'package:flutter/material.dart';
extension ExtraChipSetActionView on ChipSetAction { extension ExtraChipSetActionView on ChipSetAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
return switch (this) {
// general // general
case ChipSetAction.configureView: ChipSetAction.configureView => l10n.menuActionConfigureView,
return context.l10n.menuActionConfigureView; ChipSetAction.select => l10n.menuActionSelect,
case ChipSetAction.select: ChipSetAction.selectAll => l10n.menuActionSelectAll,
return context.l10n.menuActionSelect; ChipSetAction.selectNone => l10n.menuActionSelectNone,
case ChipSetAction.selectAll:
return context.l10n.menuActionSelectAll;
case ChipSetAction.selectNone:
return context.l10n.menuActionSelectNone;
// browsing // browsing
case ChipSetAction.search: ChipSetAction.search => MaterialLocalizations.of(context).searchFieldLabel,
return MaterialLocalizations.of(context).searchFieldLabel; ChipSetAction.toggleTitleSearch =>
case ChipSetAction.toggleTitleSearch:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.collectionActionShowTitleSearch; l10n.collectionActionShowTitleSearch,
case ChipSetAction.createAlbum: ChipSetAction.createAlbum => l10n.chipActionCreateAlbum,
return context.l10n.chipActionCreateAlbum; ChipSetAction.createVault => l10n.chipActionCreateVault,
case ChipSetAction.createVault:
return context.l10n.chipActionCreateVault;
// browsing or selecting // browsing or selecting
case ChipSetAction.map: ChipSetAction.map => l10n.menuActionMap,
return context.l10n.menuActionMap; ChipSetAction.slideshow => l10n.menuActionSlideshow,
case ChipSetAction.slideshow: ChipSetAction.stats => l10n.menuActionStats,
return context.l10n.menuActionSlideshow;
case ChipSetAction.stats:
return context.l10n.menuActionStats;
// selecting (single/multiple filters) // selecting (single/multiple filters)
case ChipSetAction.delete: ChipSetAction.delete => l10n.chipActionDelete,
return context.l10n.chipActionDelete; ChipSetAction.hide => l10n.chipActionHide,
case ChipSetAction.hide: ChipSetAction.pin => l10n.chipActionPin,
return context.l10n.chipActionHide; ChipSetAction.unpin => l10n.chipActionUnpin,
case ChipSetAction.pin: ChipSetAction.lockVault => l10n.chipActionLock,
return context.l10n.chipActionPin; ChipSetAction.showCountryStates => l10n.chipActionShowCountryStates,
case ChipSetAction.unpin:
return context.l10n.chipActionUnpin;
case ChipSetAction.lockVault:
return context.l10n.chipActionLock;
case ChipSetAction.showCountryStates:
return context.l10n.chipActionShowCountryStates;
// selecting (single filter) // selecting (single filter)
case ChipSetAction.rename: ChipSetAction.rename => l10n.chipActionRename,
return context.l10n.chipActionRename; ChipSetAction.setCover => l10n.chipActionSetCover,
case ChipSetAction.setCover: ChipSetAction.configureVault => l10n.chipActionConfigureVault,
return context.l10n.chipActionSetCover; };
case ChipSetAction.configureVault:
return context.l10n.chipActionConfigureVault;
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
// general // general
case ChipSetAction.configureView: ChipSetAction.configureView => AIcons.view,
return AIcons.view; ChipSetAction.select => AIcons.select,
case ChipSetAction.select: ChipSetAction.selectAll => AIcons.selected,
return AIcons.select; ChipSetAction.selectNone => AIcons.unselected,
case ChipSetAction.selectAll:
return AIcons.selected;
case ChipSetAction.selectNone:
return AIcons.unselected;
// browsing // browsing
case ChipSetAction.search: ChipSetAction.search => AIcons.search,
return AIcons.search; ChipSetAction.toggleTitleSearch =>
case ChipSetAction.toggleTitleSearch:
// different data depending on toggle state // different data depending on toggle state
return AIcons.filter; AIcons.filter,
case ChipSetAction.createAlbum: ChipSetAction.createAlbum => AIcons.add,
return AIcons.add; ChipSetAction.createVault => AIcons.vaultAdd,
case ChipSetAction.createVault:
return AIcons.vaultAdd;
// browsing or selecting // browsing or selecting
case ChipSetAction.map: ChipSetAction.map => AIcons.map,
return AIcons.map; ChipSetAction.slideshow => AIcons.slideshow,
case ChipSetAction.slideshow: ChipSetAction.stats => AIcons.stats,
return AIcons.slideshow;
case ChipSetAction.stats:
return AIcons.stats;
// selecting (single/multiple filters) // selecting (single/multiple filters)
case ChipSetAction.delete: ChipSetAction.delete => AIcons.delete,
return AIcons.delete; ChipSetAction.hide => AIcons.hide,
case ChipSetAction.hide: ChipSetAction.pin => AIcons.pin,
return AIcons.hide; ChipSetAction.unpin => AIcons.unpin,
case ChipSetAction.pin: ChipSetAction.lockVault => AIcons.vaultLock,
return AIcons.pin; ChipSetAction.showCountryStates => AIcons.state,
case ChipSetAction.unpin:
return AIcons.unpin;
case ChipSetAction.lockVault:
return AIcons.vaultLock;
case ChipSetAction.showCountryStates:
return AIcons.state;
// selecting (single filter) // selecting (single filter)
case ChipSetAction.rename: ChipSetAction.rename => AIcons.name,
return AIcons.name; ChipSetAction.setCover => AIcons.setCover,
case ChipSetAction.setCover: ChipSetAction.configureVault => AIcons.vaultConfigure,
return AIcons.setCover; };
case ChipSetAction.configureVault:
return AIcons.vaultConfigure;
}
} }
} }

View file

@ -6,216 +6,137 @@ import 'package:flutter/widgets.dart';
extension ExtraEntryActionView on EntryAction { extension ExtraEntryActionView on EntryAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case EntryAction.info: return switch (this) {
return context.l10n.entryActionInfo; EntryAction.info => l10n.entryActionInfo,
case EntryAction.addShortcut: EntryAction.addShortcut => l10n.collectionActionAddShortcut,
return context.l10n.collectionActionAddShortcut; EntryAction.copyToClipboard => l10n.entryActionCopyToClipboard,
case EntryAction.copyToClipboard: EntryAction.delete => l10n.entryActionDelete,
return context.l10n.entryActionCopyToClipboard; EntryAction.restore => l10n.entryActionRestore,
case EntryAction.delete: EntryAction.convert => l10n.entryActionConvert,
return context.l10n.entryActionDelete; EntryAction.print => l10n.entryActionPrint,
case EntryAction.restore: EntryAction.rename => l10n.entryActionRename,
return context.l10n.entryActionRestore; EntryAction.copy => l10n.collectionActionCopy,
case EntryAction.convert: EntryAction.move => l10n.collectionActionMove,
return context.l10n.entryActionConvert; EntryAction.share => l10n.entryActionShare,
case EntryAction.print: EntryAction.toggleFavourite =>
return context.l10n.entryActionPrint;
case EntryAction.rename:
return context.l10n.entryActionRename;
case EntryAction.copy:
return context.l10n.collectionActionCopy;
case EntryAction.move:
return context.l10n.collectionActionMove;
case EntryAction.share:
return context.l10n.entryActionShare;
case EntryAction.toggleFavourite:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.entryActionAddFavourite; l10n.entryActionAddFavourite,
// raster // raster
case EntryAction.rotateCCW: EntryAction.rotateCCW => l10n.entryActionRotateCCW,
return context.l10n.entryActionRotateCCW; EntryAction.rotateCW => l10n.entryActionRotateCW,
case EntryAction.rotateCW: EntryAction.flip => l10n.entryActionFlip,
return context.l10n.entryActionRotateCW;
case EntryAction.flip:
return context.l10n.entryActionFlip;
// vector // vector
case EntryAction.viewSource: EntryAction.viewSource => l10n.entryActionViewSource,
return context.l10n.entryActionViewSource;
// video // video
case EntryAction.lockViewer: EntryAction.lockViewer => l10n.viewerActionLock,
return context.l10n.viewerActionLock; EntryAction.videoCaptureFrame => l10n.videoActionCaptureFrame,
case EntryAction.videoCaptureFrame: EntryAction.videoToggleMute =>
return context.l10n.videoActionCaptureFrame;
case EntryAction.videoToggleMute:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.videoActionMute; l10n.videoActionMute,
case EntryAction.videoSelectStreams: EntryAction.videoSelectStreams => l10n.videoActionSelectStreams,
return context.l10n.videoActionSelectStreams; EntryAction.videoSetSpeed => l10n.videoActionSetSpeed,
case EntryAction.videoSetSpeed: EntryAction.videoSettings => l10n.viewerActionSettings,
return context.l10n.videoActionSetSpeed; EntryAction.videoTogglePlay =>
case EntryAction.videoSettings:
return context.l10n.viewerActionSettings;
case EntryAction.videoTogglePlay:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.videoActionPlay; l10n.videoActionPlay,
case EntryAction.videoReplay10: EntryAction.videoReplay10 => l10n.videoActionReplay10,
return context.l10n.videoActionReplay10; EntryAction.videoSkip10 => l10n.videoActionSkip10,
case EntryAction.videoSkip10:
return context.l10n.videoActionSkip10;
// external // external
case EntryAction.edit: EntryAction.edit => l10n.entryActionEdit,
return context.l10n.entryActionEdit; EntryAction.open || EntryAction.openVideo => l10n.entryActionOpen,
case EntryAction.open: EntryAction.openMap => l10n.entryActionOpenMap,
case EntryAction.openVideo: EntryAction.setAs => l10n.entryActionSetAs,
return context.l10n.entryActionOpen;
case EntryAction.openMap:
return context.l10n.entryActionOpenMap;
case EntryAction.setAs:
return context.l10n.entryActionSetAs;
// platform // platform
case EntryAction.rotateScreen: EntryAction.rotateScreen => l10n.entryActionRotateScreen,
return context.l10n.entryActionRotateScreen;
// metadata // metadata
case EntryAction.editDate: EntryAction.editDate => l10n.entryInfoActionEditDate,
return context.l10n.entryInfoActionEditDate; EntryAction.editLocation => l10n.entryInfoActionEditLocation,
case EntryAction.editLocation: EntryAction.editTitleDescription => l10n.entryInfoActionEditTitleDescription,
return context.l10n.entryInfoActionEditLocation; EntryAction.editRating => l10n.entryInfoActionEditRating,
case EntryAction.editTitleDescription: EntryAction.editTags => l10n.entryInfoActionEditTags,
return context.l10n.entryInfoActionEditTitleDescription; EntryAction.removeMetadata => l10n.entryInfoActionRemoveMetadata,
case EntryAction.editRating: EntryAction.exportMetadata => l10n.entryInfoActionExportMetadata,
return context.l10n.entryInfoActionEditRating;
case EntryAction.editTags:
return context.l10n.entryInfoActionEditTags;
case EntryAction.removeMetadata:
return context.l10n.entryInfoActionRemoveMetadata;
case EntryAction.exportMetadata:
return context.l10n.entryInfoActionExportMetadata;
// metadata / GeoTIFF // metadata / GeoTIFF
case EntryAction.showGeoTiffOnMap: EntryAction.showGeoTiffOnMap => l10n.entryActionShowGeoTiffOnMap,
return context.l10n.entryActionShowGeoTiffOnMap;
// metadata / motion photo // metadata / motion photo
case EntryAction.convertMotionPhotoToStillImage: EntryAction.convertMotionPhotoToStillImage => l10n.entryActionConvertMotionPhotoToStillImage,
return context.l10n.entryActionConvertMotionPhotoToStillImage; EntryAction.viewMotionPhotoVideo => l10n.entryActionViewMotionPhotoVideo,
case EntryAction.viewMotionPhotoVideo:
return context.l10n.entryActionViewMotionPhotoVideo;
// debug // debug
case EntryAction.debug: EntryAction.debug => 'Debug',
return 'Debug'; };
}
} }
Widget getIcon() { Widget getIcon() {
final child = Icon(getIconData()); final child = Icon(getIconData());
switch (this) { return switch (this) {
case EntryAction.debug: EntryAction.debug => ShaderMask(
return ShaderMask(
shaderCallback: AvesColorsData.debugGradient.createShader, shaderCallback: AvesColorsData.debugGradient.createShader,
blendMode: BlendMode.srcIn, blendMode: BlendMode.srcIn,
child: child, child: child,
); ),
default: _ => child,
return child; };
}
} }
IconData getIconData() { IconData getIconData() {
switch (this) { return switch (this) {
case EntryAction.info: EntryAction.info => AIcons.info,
return AIcons.info; EntryAction.addShortcut => AIcons.addShortcut,
case EntryAction.addShortcut: EntryAction.copyToClipboard => AIcons.clipboard,
return AIcons.addShortcut; EntryAction.delete => AIcons.delete,
case EntryAction.copyToClipboard: EntryAction.restore => AIcons.restore,
return AIcons.clipboard; EntryAction.convert => AIcons.convert,
case EntryAction.delete: EntryAction.print => AIcons.print,
return AIcons.delete; EntryAction.rename => AIcons.name,
case EntryAction.restore: EntryAction.copy => AIcons.copy,
return AIcons.restore; EntryAction.move => AIcons.move,
case EntryAction.convert: EntryAction.share => AIcons.share,
return AIcons.convert; EntryAction.toggleFavourite =>
case EntryAction.print:
return AIcons.print;
case EntryAction.rename:
return AIcons.name;
case EntryAction.copy:
return AIcons.copy;
case EntryAction.move:
return AIcons.move;
case EntryAction.share:
return AIcons.share;
case EntryAction.toggleFavourite:
// different data depending on toggle state // different data depending on toggle state
return AIcons.favourite; AIcons.favourite,
// raster // raster
case EntryAction.rotateCCW: EntryAction.rotateCCW => AIcons.rotateLeft,
return AIcons.rotateLeft; EntryAction.rotateCW => AIcons.rotateRight,
case EntryAction.rotateCW: EntryAction.flip => AIcons.flip,
return AIcons.rotateRight;
case EntryAction.flip:
return AIcons.flip;
// vector // vector
case EntryAction.viewSource: EntryAction.viewSource => AIcons.vector,
return AIcons.vector;
// video // video
case EntryAction.lockViewer: EntryAction.lockViewer => AIcons.viewerLock,
return AIcons.viewerLock; EntryAction.videoCaptureFrame => AIcons.captureFrame,
case EntryAction.videoCaptureFrame: EntryAction.videoToggleMute =>
return AIcons.captureFrame;
case EntryAction.videoToggleMute:
// different data depending on toggle state // different data depending on toggle state
return AIcons.mute; AIcons.mute,
case EntryAction.videoSelectStreams: EntryAction.videoSelectStreams => AIcons.streams,
return AIcons.streams; EntryAction.videoSetSpeed => AIcons.speed,
case EntryAction.videoSetSpeed: EntryAction.videoSettings => AIcons.videoSettings,
return AIcons.speed; EntryAction.videoTogglePlay =>
case EntryAction.videoSettings:
return AIcons.videoSettings;
case EntryAction.videoTogglePlay:
// different data depending on toggle state // different data depending on toggle state
return AIcons.play; AIcons.play,
case EntryAction.videoReplay10: EntryAction.videoReplay10 => AIcons.replay10,
return AIcons.replay10; EntryAction.videoSkip10 => AIcons.skip10,
case EntryAction.videoSkip10:
return AIcons.skip10;
// external // external
case EntryAction.edit: EntryAction.edit => AIcons.edit,
return AIcons.edit; EntryAction.open || EntryAction.openVideo => AIcons.openOutside,
case EntryAction.open: EntryAction.openMap => AIcons.map,
case EntryAction.openVideo: EntryAction.setAs => AIcons.setAs,
return AIcons.openOutside;
case EntryAction.openMap:
return AIcons.map;
case EntryAction.setAs:
return AIcons.setAs;
// platform // platform
case EntryAction.rotateScreen: EntryAction.rotateScreen => AIcons.rotateScreen,
return AIcons.rotateScreen;
// metadata // metadata
case EntryAction.editDate: EntryAction.editDate => AIcons.date,
return AIcons.date; EntryAction.editLocation => AIcons.location,
case EntryAction.editLocation: EntryAction.editTitleDescription => AIcons.description,
return AIcons.location; EntryAction.editRating => AIcons.rating,
case EntryAction.editTitleDescription: EntryAction.editTags => AIcons.tag,
return AIcons.description; EntryAction.removeMetadata => AIcons.clear,
case EntryAction.editRating: EntryAction.exportMetadata => AIcons.fileExport,
return AIcons.rating;
case EntryAction.editTags:
return AIcons.tag;
case EntryAction.removeMetadata:
return AIcons.clear;
case EntryAction.exportMetadata:
return AIcons.fileExport;
// metadata / GeoTIFF // metadata / GeoTIFF
case EntryAction.showGeoTiffOnMap: EntryAction.showGeoTiffOnMap => AIcons.map,
return AIcons.map;
// metadata / motion photo // metadata / motion photo
case EntryAction.convertMotionPhotoToStillImage: EntryAction.convertMotionPhotoToStillImage => AIcons.convertToStillImage,
return AIcons.convertToStillImage; EntryAction.viewMotionPhotoVideo => AIcons.openVideo,
case EntryAction.viewMotionPhotoVideo:
return AIcons.openVideo;
// debug // debug
case EntryAction.debug: EntryAction.debug => AIcons.debug,
return AIcons.debug; };
}
} }
} }

View file

@ -5,142 +5,88 @@ import 'package:flutter/material.dart';
extension ExtraEntrySetActionView on EntrySetAction { extension ExtraEntrySetActionView on EntrySetAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { return switch (this) {
// general // general
case EntrySetAction.configureView: EntrySetAction.configureView => context.l10n.menuActionConfigureView,
return context.l10n.menuActionConfigureView; EntrySetAction.select => context.l10n.menuActionSelect,
case EntrySetAction.select: EntrySetAction.selectAll => context.l10n.menuActionSelectAll,
return context.l10n.menuActionSelect; EntrySetAction.selectNone => context.l10n.menuActionSelectNone,
case EntrySetAction.selectAll:
return context.l10n.menuActionSelectAll;
case EntrySetAction.selectNone:
return context.l10n.menuActionSelectNone;
// browsing // browsing
case EntrySetAction.searchCollection: EntrySetAction.searchCollection => MaterialLocalizations.of(context).searchFieldLabel,
return MaterialLocalizations.of(context).searchFieldLabel; EntrySetAction.toggleTitleSearch =>
case EntrySetAction.toggleTitleSearch:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.collectionActionShowTitleSearch; context.l10n.collectionActionShowTitleSearch,
case EntrySetAction.addShortcut: EntrySetAction.addShortcut => context.l10n.collectionActionAddShortcut,
return context.l10n.collectionActionAddShortcut; EntrySetAction.emptyBin => context.l10n.collectionActionEmptyBin,
case EntrySetAction.emptyBin:
return context.l10n.collectionActionEmptyBin;
// browsing or selecting // browsing or selecting
case EntrySetAction.map: EntrySetAction.map => context.l10n.menuActionMap,
return context.l10n.menuActionMap; EntrySetAction.slideshow => context.l10n.menuActionSlideshow,
case EntrySetAction.slideshow: EntrySetAction.stats => context.l10n.menuActionStats,
return context.l10n.menuActionSlideshow; EntrySetAction.rescan => context.l10n.collectionActionRescan,
case EntrySetAction.stats:
return context.l10n.menuActionStats;
case EntrySetAction.rescan:
return context.l10n.collectionActionRescan;
// selecting // selecting
case EntrySetAction.share: EntrySetAction.share => context.l10n.entryActionShare,
return context.l10n.entryActionShare; EntrySetAction.delete => context.l10n.entryActionDelete,
case EntrySetAction.delete: EntrySetAction.restore => context.l10n.entryActionRestore,
return context.l10n.entryActionDelete; EntrySetAction.copy => context.l10n.collectionActionCopy,
case EntrySetAction.restore: EntrySetAction.move => context.l10n.collectionActionMove,
return context.l10n.entryActionRestore; EntrySetAction.rename => context.l10n.entryActionRename,
case EntrySetAction.copy: EntrySetAction.convert => context.l10n.entryActionConvert,
return context.l10n.collectionActionCopy; EntrySetAction.toggleFavourite =>
case EntrySetAction.move:
return context.l10n.collectionActionMove;
case EntrySetAction.rename:
return context.l10n.entryActionRename;
case EntrySetAction.convert:
return context.l10n.entryActionConvert;
case EntrySetAction.toggleFavourite:
// different data depending on toggle state // different data depending on toggle state
return context.l10n.entryActionAddFavourite; context.l10n.entryActionAddFavourite,
case EntrySetAction.rotateCCW: EntrySetAction.rotateCCW => context.l10n.entryActionRotateCCW,
return context.l10n.entryActionRotateCCW; EntrySetAction.rotateCW => context.l10n.entryActionRotateCW,
case EntrySetAction.rotateCW: EntrySetAction.flip => context.l10n.entryActionFlip,
return context.l10n.entryActionRotateCW; EntrySetAction.editDate => context.l10n.entryInfoActionEditDate,
case EntrySetAction.flip: EntrySetAction.editLocation => context.l10n.entryInfoActionEditLocation,
return context.l10n.entryActionFlip; EntrySetAction.editTitleDescription => context.l10n.entryInfoActionEditTitleDescription,
case EntrySetAction.editDate: EntrySetAction.editRating => context.l10n.entryInfoActionEditRating,
return context.l10n.entryInfoActionEditDate; EntrySetAction.editTags => context.l10n.entryInfoActionEditTags,
case EntrySetAction.editLocation: EntrySetAction.removeMetadata => context.l10n.entryInfoActionRemoveMetadata,
return context.l10n.entryInfoActionEditLocation; };
case EntrySetAction.editTitleDescription:
return context.l10n.entryInfoActionEditTitleDescription;
case EntrySetAction.editRating:
return context.l10n.entryInfoActionEditRating;
case EntrySetAction.editTags:
return context.l10n.entryInfoActionEditTags;
case EntrySetAction.removeMetadata:
return context.l10n.entryInfoActionRemoveMetadata;
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
// general // general
case EntrySetAction.configureView: EntrySetAction.configureView => AIcons.view,
return AIcons.view; EntrySetAction.select => AIcons.select,
case EntrySetAction.select: EntrySetAction.selectAll => AIcons.selected,
return AIcons.select; EntrySetAction.selectNone => AIcons.unselected,
case EntrySetAction.selectAll:
return AIcons.selected;
case EntrySetAction.selectNone:
return AIcons.unselected;
// browsing // browsing
case EntrySetAction.searchCollection: EntrySetAction.searchCollection => AIcons.search,
return AIcons.search; EntrySetAction.toggleTitleSearch =>
case EntrySetAction.toggleTitleSearch:
// different data depending on toggle state // different data depending on toggle state
return AIcons.filter; AIcons.filter,
case EntrySetAction.addShortcut: EntrySetAction.addShortcut => AIcons.addShortcut,
return AIcons.addShortcut; EntrySetAction.emptyBin => AIcons.emptyBin,
case EntrySetAction.emptyBin:
return AIcons.emptyBin;
// browsing or selecting // browsing or selecting
case EntrySetAction.map: EntrySetAction.map => AIcons.map,
return AIcons.map; EntrySetAction.slideshow => AIcons.slideshow,
case EntrySetAction.slideshow: EntrySetAction.stats => AIcons.stats,
return AIcons.slideshow; EntrySetAction.rescan => AIcons.refresh,
case EntrySetAction.stats:
return AIcons.stats;
case EntrySetAction.rescan:
return AIcons.refresh;
// selecting // selecting
case EntrySetAction.share: EntrySetAction.share => AIcons.share,
return AIcons.share; EntrySetAction.delete => AIcons.delete,
case EntrySetAction.delete: EntrySetAction.restore => AIcons.restore,
return AIcons.delete; EntrySetAction.copy => AIcons.copy,
case EntrySetAction.restore: EntrySetAction.move => AIcons.move,
return AIcons.restore; EntrySetAction.rename => AIcons.name,
case EntrySetAction.copy: EntrySetAction.convert => AIcons.convert,
return AIcons.copy; EntrySetAction.toggleFavourite =>
case EntrySetAction.move:
return AIcons.move;
case EntrySetAction.rename:
return AIcons.name;
case EntrySetAction.convert:
return AIcons.convert;
case EntrySetAction.toggleFavourite:
// different data depending on toggle state // different data depending on toggle state
return AIcons.favourite; AIcons.favourite,
case EntrySetAction.rotateCCW: EntrySetAction.rotateCCW => AIcons.rotateLeft,
return AIcons.rotateLeft; EntrySetAction.rotateCW => AIcons.rotateRight,
case EntrySetAction.rotateCW: EntrySetAction.flip => AIcons.flip,
return AIcons.rotateRight; EntrySetAction.editDate => AIcons.date,
case EntrySetAction.flip: EntrySetAction.editLocation => AIcons.location,
return AIcons.flip; EntrySetAction.editTitleDescription => AIcons.description,
case EntrySetAction.editDate: EntrySetAction.editRating => AIcons.rating,
return AIcons.date; EntrySetAction.editTags => AIcons.tag,
case EntrySetAction.editLocation: EntrySetAction.removeMetadata => AIcons.clear,
return AIcons.location; };
case EntrySetAction.editTitleDescription:
return AIcons.description;
case EntrySetAction.editRating:
return AIcons.rating;
case EntrySetAction.editTags:
return AIcons.tag;
case EntrySetAction.removeMetadata:
return AIcons.clear;
}
} }
} }

View file

@ -5,26 +5,21 @@ import 'package:flutter/widgets.dart';
extension ExtraMapActionView on MapAction { extension ExtraMapActionView on MapAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case MapAction.selectStyle: return switch (this) {
return context.l10n.mapStyleTooltip; MapAction.selectStyle => l10n.mapStyleTooltip,
case MapAction.zoomIn: MapAction.zoomIn => l10n.mapZoomInTooltip,
return context.l10n.mapZoomInTooltip; MapAction.zoomOut => l10n.mapZoomOutTooltip,
case MapAction.zoomOut: };
return context.l10n.mapZoomOutTooltip;
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case MapAction.selectStyle: MapAction.selectStyle => AIcons.layers,
return AIcons.layers; MapAction.zoomIn => AIcons.zoomIn,
case MapAction.zoomIn: MapAction.zoomOut => AIcons.zoomOut,
return AIcons.zoomIn; };
case MapAction.zoomOut:
return AIcons.zoomOut;
}
} }
} }

View file

@ -5,22 +5,19 @@ import 'package:flutter/widgets.dart';
extension ExtraMapClusterActionView on MapClusterAction { extension ExtraMapClusterActionView on MapClusterAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case MapClusterAction.editLocation: return switch (this) {
return context.l10n.entryInfoActionEditLocation; MapClusterAction.editLocation => l10n.entryInfoActionEditLocation,
case MapClusterAction.removeLocation: MapClusterAction.removeLocation => l10n.entryInfoActionRemoveLocation,
return context.l10n.entryInfoActionRemoveLocation; };
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case MapClusterAction.editLocation: MapClusterAction.editLocation => AIcons.edit,
return AIcons.edit; MapClusterAction.removeLocation => AIcons.clear,
case MapClusterAction.removeLocation: };
return AIcons.clear;
}
} }
} }

View file

@ -5,22 +5,19 @@ import 'package:flutter/widgets.dart';
extension ExtraShareActionView on ShareAction { extension ExtraShareActionView on ShareAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case ShareAction.imageOnly: return switch (this) {
return context.l10n.entryActionShareImageOnly; ShareAction.imageOnly => l10n.entryActionShareImageOnly,
case ShareAction.videoOnly: ShareAction.videoOnly => l10n.entryActionShareVideoOnly,
return context.l10n.entryActionShareVideoOnly; };
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case ShareAction.imageOnly: ShareAction.imageOnly => AIcons.image,
return AIcons.image; ShareAction.videoOnly => AIcons.video,
case ShareAction.videoOnly: };
return AIcons.video;
}
} }
} }

View file

@ -5,26 +5,21 @@ import 'package:flutter/widgets.dart';
extension ExtraSlideshowActionView on SlideshowAction { extension ExtraSlideshowActionView on SlideshowAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case SlideshowAction.resume: return switch (this) {
return context.l10n.slideshowActionResume; SlideshowAction.resume => l10n.slideshowActionResume,
case SlideshowAction.showInCollection: SlideshowAction.showInCollection => l10n.slideshowActionShowInCollection,
return context.l10n.slideshowActionShowInCollection; SlideshowAction.settings => l10n.viewerActionSettings,
case SlideshowAction.settings: };
return context.l10n.viewerActionSettings;
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case SlideshowAction.resume: SlideshowAction.resume => AIcons.play,
return AIcons.play; SlideshowAction.showInCollection => AIcons.allCollection,
case SlideshowAction.showInCollection: SlideshowAction.settings => AIcons.settings,
return AIcons.allCollection; };
case SlideshowAction.settings:
return AIcons.settings;
}
} }
} }

View file

@ -6,52 +6,42 @@ import 'package:flutter/widgets.dart';
extension ExtraEditorActionView on EditorAction { extension ExtraEditorActionView on EditorAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case EditorAction.transform: return switch (this) {
return context.l10n.editorActionTransform; EditorAction.transform => l10n.editorActionTransform,
} };
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case EditorAction.transform: EditorAction.transform => AIcons.transform,
return AIcons.transform; };
}
} }
} }
extension ExtraCropAspectRatioView on CropAspectRatio { extension ExtraCropAspectRatioView on CropAspectRatio {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case CropAspectRatio.free: return switch (this) {
return context.l10n.cropAspectRatioFree; CropAspectRatio.free => l10n.cropAspectRatioFree,
case CropAspectRatio.original: CropAspectRatio.original => l10n.cropAspectRatioOriginal,
return context.l10n.cropAspectRatioOriginal; CropAspectRatio.square => l10n.cropAspectRatioSquare,
case CropAspectRatio.square: CropAspectRatio.ar_16_9 => '16${UniChars.ratio}9',
return context.l10n.cropAspectRatioSquare; CropAspectRatio.ar_4_3 => '4${UniChars.ratio}3',
case CropAspectRatio.ar_16_9: };
return '16${UniChars.ratio}9';
case CropAspectRatio.ar_4_3:
return '4${UniChars.ratio}3';
}
} }
Widget getIcon() => Icon(_getIconData()); Widget getIcon() => Icon(_getIconData());
IconData _getIconData() { IconData _getIconData() {
switch (this) { return switch (this) {
case CropAspectRatio.free: CropAspectRatio.free => AIcons.aspectRatioFree,
return AIcons.aspectRatioFree; CropAspectRatio.original => AIcons.aspectRatioOriginal,
case CropAspectRatio.original: CropAspectRatio.square => AIcons.aspectRatioSquare,
return AIcons.aspectRatioOriginal; CropAspectRatio.ar_16_9 => AIcons.aspectRatio_16_9,
case CropAspectRatio.square: CropAspectRatio.ar_4_3 => AIcons.aspectRatio_4_3,
return AIcons.aspectRatioSquare; };
case CropAspectRatio.ar_16_9:
return AIcons.aspectRatio_16_9;
case CropAspectRatio.ar_4_3:
return AIcons.aspectRatio_4_3;
}
} }
} }

View file

@ -4,19 +4,14 @@ import 'package:flutter/widgets.dart';
extension ExtraDateEditActionView on DateEditAction { extension ExtraDateEditActionView on DateEditAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case DateEditAction.setCustom: return switch (this) {
return context.l10n.editEntryDateDialogSetCustom; DateEditAction.setCustom => l10n.editEntryDateDialogSetCustom,
case DateEditAction.copyField: DateEditAction.copyField => l10n.editEntryDateDialogCopyField,
return context.l10n.editEntryDateDialogCopyField; DateEditAction.copyItem => l10n.editEntryDialogCopyFromItem,
case DateEditAction.copyItem: DateEditAction.extractFromTitle => l10n.editEntryDateDialogExtractFromTitle,
return context.l10n.editEntryDialogCopyFromItem; DateEditAction.shift => l10n.editEntryDateDialogShift,
case DateEditAction.extractFromTitle: DateEditAction.remove => l10n.actionRemove,
return context.l10n.editEntryDateDialogExtractFromTitle; };
case DateEditAction.shift:
return context.l10n.editEntryDateDialogShift;
case DateEditAction.remove:
return context.l10n.actionRemove;
}
} }
} }

View file

@ -4,17 +4,12 @@ import 'package:flutter/widgets.dart';
extension ExtraDateFieldSourceView on DateFieldSource { extension ExtraDateFieldSourceView on DateFieldSource {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { return switch (this) {
case DateFieldSource.fileModifiedDate: DateFieldSource.fileModifiedDate => context.l10n.editEntryDateDialogSourceFileModifiedDate,
return context.l10n.editEntryDateDialogSourceFileModifiedDate; DateFieldSource.exifDate => 'Exif date',
case DateFieldSource.exifDate: DateFieldSource.exifDateOriginal => 'Exif original date',
return 'Exif date'; DateFieldSource.exifDateDigitized => 'Exif digitized date',
case DateFieldSource.exifDateOriginal: DateFieldSource.exifGpsDate => 'Exif GPS date',
return 'Exif original date'; };
case DateFieldSource.exifDateDigitized:
return 'Exif digitized date';
case DateFieldSource.exifGpsDate:
return 'Exif GPS date';
}
} }
} }

View file

@ -4,11 +4,10 @@ import 'package:flutter/widgets.dart';
extension ExtraLengthUnitView on LengthUnit { extension ExtraLengthUnitView on LengthUnit {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case LengthUnit.px: return switch (this) {
return context.l10n.lengthUnitPixel; LengthUnit.px => l10n.lengthUnitPixel,
case LengthUnit.percent: LengthUnit.percent => l10n.lengthUnitPercent,
return context.l10n.lengthUnitPercent; };
}
} }
} }

View file

@ -4,15 +4,12 @@ import 'package:flutter/widgets.dart';
extension ExtraLocationEditActionView on LocationEditAction { extension ExtraLocationEditActionView on LocationEditAction {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case LocationEditAction.chooseOnMap: return switch (this) {
return context.l10n.editEntryLocationDialogChooseOnMap; LocationEditAction.chooseOnMap => l10n.editEntryLocationDialogChooseOnMap,
case LocationEditAction.copyItem: LocationEditAction.copyItem => l10n.editEntryDialogCopyFromItem,
return context.l10n.editEntryDialogCopyFromItem; LocationEditAction.setCustom => l10n.editEntryLocationDialogSetCustom,
case LocationEditAction.setCustom: LocationEditAction.remove => l10n.actionRemove,
return context.l10n.editEntryLocationDialogSetCustom; };
case LocationEditAction.remove:
return context.l10n.actionRemove;
}
} }
} }

View file

@ -3,27 +3,17 @@ import 'package:aves_model/aves_model.dart';
extension ExtraMetadataTypeView on MetadataType { extension ExtraMetadataTypeView on MetadataType {
// match `metadata-extractor` directory names // match `metadata-extractor` directory names
String getText() { String getText() {
switch (this) { return switch (this) {
case MetadataType.comment: MetadataType.comment => 'Comment',
return 'Comment'; MetadataType.exif => 'Exif',
case MetadataType.exif: MetadataType.iccProfile => 'ICC Profile',
return 'Exif'; MetadataType.iptc => 'IPTC',
case MetadataType.iccProfile: MetadataType.jfif => 'JFIF',
return 'ICC Profile'; MetadataType.jpegAdobe => 'Adobe JPEG',
case MetadataType.iptc: MetadataType.jpegDucky => 'Ducky',
return 'IPTC'; MetadataType.mp4 => 'MP4',
case MetadataType.jfif: MetadataType.photoshopIrb => 'Photoshop',
return 'JFIF'; MetadataType.xmp => 'XMP',
case MetadataType.jpegAdobe: };
return 'Adobe JPEG';
case MetadataType.jpegDucky:
return 'Ducky';
case MetadataType.mp4:
return 'MP4';
case MetadataType.photoshopIrb:
return 'Photoshop';
case MetadataType.xmp:
return 'XMP';
}
} }
} }

View file

@ -4,21 +4,14 @@ import 'package:flutter/widgets.dart';
extension ExtraAlbumTypeView on AlbumType { extension ExtraAlbumTypeView on AlbumType {
String? getName(BuildContext context) { String? getName(BuildContext context) {
switch (this) { final l10n = context.l10n;
case AlbumType.camera: return switch (this) {
return context.l10n.albumCamera; AlbumType.camera => l10n.albumCamera,
case AlbumType.download: AlbumType.download => l10n.albumDownload,
return context.l10n.albumDownload; AlbumType.screenshots => l10n.albumScreenshots,
case AlbumType.screenshots: AlbumType.screenRecordings => l10n.albumScreenRecordings,
return context.l10n.albumScreenshots; AlbumType.videoCaptures => l10n.albumVideoCaptures,
case AlbumType.screenRecordings: AlbumType.regular || AlbumType.vault || AlbumType.app => null,
return context.l10n.albumScreenRecordings; };
case AlbumType.videoCaptures:
return context.l10n.albumVideoCaptures;
case AlbumType.regular:
case AlbumType.vault:
case AlbumType.app:
return null;
}
} }
} }

View file

@ -3,17 +3,12 @@ import 'package:aves_model/aves_model.dart';
extension ExtraSourceStateView on SourceState { extension ExtraSourceStateView on SourceState {
String? getName(AppLocalizations l10n) { String? getName(AppLocalizations l10n) {
switch (this) { return switch (this) {
case SourceState.loading: SourceState.loading => l10n.sourceStateLoading,
return l10n.sourceStateLoading; SourceState.cataloguing => l10n.sourceStateCataloguing,
case SourceState.cataloguing: SourceState.locatingCountries => l10n.sourceStateLocatingCountries,
return l10n.sourceStateCataloguing; SourceState.locatingPlaces => l10n.sourceStateLocatingPlaces,
case SourceState.locatingCountries: SourceState.ready => null,
return l10n.sourceStateLocatingCountries; };
case SourceState.locatingPlaces:
return l10n.sourceStateLocatingPlaces;
case SourceState.ready:
return null;
}
} }
} }

View file

@ -4,15 +4,12 @@ import 'package:flutter/widgets.dart';
extension ExtraVaultLockTypeView on VaultLockType { extension ExtraVaultLockTypeView on VaultLockType {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case VaultLockType.system: return switch (this) {
return context.l10n.settingsSystemDefault; VaultLockType.system => l10n.settingsSystemDefault,
case VaultLockType.pattern: VaultLockType.pattern => l10n.vaultLockTypePattern,
return context.l10n.vaultLockTypePattern; VaultLockType.pin => l10n.vaultLockTypePin,
case VaultLockType.pin: VaultLockType.password => l10n.vaultLockTypePassword,
return context.l10n.vaultLockTypePin; };
case VaultLockType.password:
return context.l10n.vaultLockTypePassword;
}
} }
} }

View file

@ -30,13 +30,10 @@ class TvNavigationPopHandler {
if (currentRoute != homePage.routeName) return false; if (currentRoute != homePage.routeName) return false;
switch (homePage) { return switch (homePage) {
case HomePageSetting.collection: HomePageSetting.collection => context.read<CollectionLens>().filters.isEmpty,
return context.read<CollectionLens>().filters.isEmpty; HomePageSetting.albums || HomePageSetting.tags => true,
case HomePageSetting.albums: };
case HomePageSetting.tags:
return true;
}
} }
static Route _getHomeRoute() { static Route _getHomeRoute() {
@ -46,13 +43,10 @@ class TvNavigationPopHandler {
builder: builder, builder: builder,
); );
switch (homePage) { return switch (homePage) {
case HomePageSetting.collection: HomePageSetting.collection => buildRoute((context) => CollectionPage(source: context.read<CollectionSource>(), filters: null)),
return buildRoute((context) => CollectionPage(source: context.read<CollectionSource>(), filters: null)); HomePageSetting.albums => buildRoute((context) => const AlbumListPage()),
case HomePageSetting.albums: HomePageSetting.tags => buildRoute((context) => const TagListPage()),
return buildRoute((context) => const AlbumListPage()); };
case HomePageSetting.tags:
return buildRoute((context) => const TagListPage());
}
} }
} }

View file

@ -92,12 +92,11 @@ class _EditEntryTitleDescriptionDialogState extends State<EditEntryTitleDescript
} }
String _fieldName(DescriptionField field) { String _fieldName(DescriptionField field) {
switch (field) { final l10n = context.l10n;
case DescriptionField.title: return switch (field) {
return context.l10n.viewerInfoLabelTitle; DescriptionField.title => l10n.viewerInfoLabelTitle,
case DescriptionField.description: DescriptionField.description => l10n.viewerInfoLabelDescription,
return context.l10n.viewerInfoLabelDescription; };
}
} }
void _submit(BuildContext context) { void _submit(BuildContext context) {

View file

@ -68,18 +68,13 @@ class _AlbumPickPageState extends State<_AlbumPickPage> {
CollectionSource get source => widget.source; CollectionSource get source => widget.source;
String get title { String get title {
switch (widget.moveType) { final l10n = context.l10n;
case MoveType.copy: return switch (widget.moveType) {
return context.l10n.albumPickPageTitleCopy; MoveType.copy => l10n.albumPickPageTitleCopy,
case MoveType.move: MoveType.move => l10n.albumPickPageTitleMove,
return context.l10n.albumPickPageTitleMove; MoveType.export => l10n.albumPickPageTitleExport,
case MoveType.export: MoveType.toBin || MoveType.fromBin || null => l10n.albumPickPageTitlePick,
return context.l10n.albumPickPageTitleExport; };
case MoveType.toBin:
case MoveType.fromBin:
case null:
return context.l10n.albumPickPageTitlePick;
}
} }
static const _quickActions = [ static const _quickActions = [

View file

@ -6,37 +6,26 @@ enum AlbumImportance { newAlbum, pinned, special, apps, vaults, regular }
extension ExtraAlbumImportance on AlbumImportance { extension ExtraAlbumImportance on AlbumImportance {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case AlbumImportance.newAlbum: return switch (this) {
return context.l10n.albumTierNew; AlbumImportance.newAlbum => l10n.albumTierNew,
case AlbumImportance.pinned: AlbumImportance.pinned => l10n.albumTierPinned,
return context.l10n.albumTierPinned; AlbumImportance.special => l10n.albumTierSpecial,
case AlbumImportance.special: AlbumImportance.apps => l10n.albumTierApps,
return context.l10n.albumTierSpecial; AlbumImportance.vaults => l10n.albumTierVaults,
case AlbumImportance.apps: AlbumImportance.regular => l10n.albumTierRegular,
return context.l10n.albumTierApps; };
case AlbumImportance.vaults:
return context.l10n.albumTierVaults;
case AlbumImportance.regular:
return context.l10n.albumTierRegular;
}
} }
IconData getIcon() { IconData getIcon() {
switch (this) { return switch (this) {
case AlbumImportance.newAlbum: AlbumImportance.newAlbum => AIcons.newTier,
return AIcons.newTier; AlbumImportance.pinned => AIcons.pin,
case AlbumImportance.pinned: AlbumImportance.special => AIcons.important,
return AIcons.pin; AlbumImportance.apps => AIcons.app,
case AlbumImportance.special: AlbumImportance.vaults => AIcons.locked,
return AIcons.important; AlbumImportance.regular => AIcons.album,
case AlbumImportance.apps: };
return AIcons.app;
case AlbumImportance.vaults:
return AIcons.locked;
case AlbumImportance.regular:
return AIcons.album;
}
} }
} }
@ -44,24 +33,19 @@ enum AlbumMimeType { images, videos, mixed }
extension ExtraAlbumMimeType on AlbumMimeType { extension ExtraAlbumMimeType on AlbumMimeType {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case AlbumMimeType.images: return switch (this) {
return context.l10n.drawerCollectionImages; AlbumMimeType.images => l10n.drawerCollectionImages,
case AlbumMimeType.videos: AlbumMimeType.videos => l10n.drawerCollectionVideos,
return context.l10n.drawerCollectionVideos; AlbumMimeType.mixed => l10n.albumMimeTypeMixed,
case AlbumMimeType.mixed: };
return context.l10n.albumMimeTypeMixed;
}
} }
IconData getIcon() { IconData getIcon() {
switch (this) { return switch (this) {
case AlbumMimeType.images: AlbumMimeType.images => AIcons.image,
return AIcons.image; AlbumMimeType.videos => AIcons.video,
case AlbumMimeType.videos: AlbumMimeType.mixed => AIcons.mimeType,
return AIcons.video; };
case AlbumMimeType.mixed:
return AIcons.mimeType;
}
} }
} }

View file

@ -9,25 +9,20 @@ enum AppExportItem { covers, favourites, settings }
extension ExtraAppExportItem on AppExportItem { extension ExtraAppExportItem on AppExportItem {
String getText(BuildContext context) { String getText(BuildContext context) {
switch (this) { final l10n = context.l10n;
case AppExportItem.covers: return switch (this) {
return context.l10n.appExportCovers; AppExportItem.covers => l10n.appExportCovers,
case AppExportItem.favourites: AppExportItem.favourites => l10n.appExportFavourites,
return context.l10n.appExportFavourites; AppExportItem.settings => l10n.appExportSettings,
case AppExportItem.settings: };
return context.l10n.appExportSettings;
}
} }
dynamic export(CollectionSource source) { dynamic export(CollectionSource source) {
switch (this) { return switch (this) {
case AppExportItem.covers: AppExportItem.covers => covers.export(source),
return covers.export(source); AppExportItem.favourites => favourites.export(source),
case AppExportItem.favourites: AppExportItem.settings => settings.export(),
return favourites.export(source); };
case AppExportItem.settings:
return settings.export();
}
} }
Future<void> import(dynamic jsonMap, CollectionSource source) async { Future<void> import(dynamic jsonMap, CollectionSource source) async {

View file

@ -97,15 +97,12 @@ class SubtitleThemePage extends StatelessWidget {
} }
String _getTextAlignName(BuildContext context, TextAlign align) { String _getTextAlignName(BuildContext context, TextAlign align) {
switch (align) { final l10n = context.l10n;
case TextAlign.left: return switch (align) {
return context.l10n.settingsSubtitleThemeTextAlignmentLeft; TextAlign.left => l10n.settingsSubtitleThemeTextAlignmentLeft,
case TextAlign.center: TextAlign.center => l10n.settingsSubtitleThemeTextAlignmentCenter,
return context.l10n.settingsSubtitleThemeTextAlignmentCenter; TextAlign.right => l10n.settingsSubtitleThemeTextAlignmentRight,
case TextAlign.right: _ => '',
return context.l10n.settingsSubtitleThemeTextAlignmentRight; };
default:
return '';
}
} }
} }

View file

@ -1678,20 +1678,6 @@
"settingsViewerShowHistogram" "settingsViewerShowHistogram"
], ],
"es": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"eu": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"fa": [ "fa": [
"saveCopyButtonLabel", "saveCopyButtonLabel",
"applyTooltip", "applyTooltip",
@ -2207,13 +2193,6 @@
"filePickerUseThisFolder" "filePickerUseThisFolder"
], ],
"fr": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"gl": [ "gl": [
"columnCount", "columnCount",
"saveCopyButtonLabel", "saveCopyButtonLabel",
@ -4100,13 +4079,6 @@
"settingsViewerShowHistogram" "settingsViewerShowHistogram"
], ],
"id": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"it": [ "it": [
"overlayHistogramNone", "overlayHistogramNone",
"overlayHistogramRGB", "overlayHistogramRGB",
@ -4825,13 +4797,6 @@
"filePickerUseThisFolder" "filePickerUseThisFolder"
], ],
"ko": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"lt": [ "lt": [
"columnCount", "columnCount",
"saveCopyButtonLabel", "saveCopyButtonLabel",
@ -6235,53 +6200,23 @@
], ],
"nb": [ "nb": [
"saveCopyButtonLabel",
"applyTooltip",
"chipActionShowCountryStates",
"viewerActionLock", "viewerActionLock",
"viewerActionUnlock", "viewerActionUnlock",
"editorActionTransform", "editorActionTransform",
"editorTransformCrop",
"editorTransformRotate",
"cropAspectRatioFree", "cropAspectRatioFree",
"cropAspectRatioOriginal", "cropAspectRatioOriginal",
"cropAspectRatioSquare", "cropAspectRatioSquare",
"maxBrightnessNever",
"maxBrightnessAlways",
"overlayHistogramNone", "overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance", "overlayHistogramLuminance",
"vaultLockTypePattern",
"settingsVideoEnablePip", "settingsVideoEnablePip",
"videoResumptionModeNever",
"videoResumptionModeAlways",
"widgetTapUpdateWidget", "widgetTapUpdateWidget",
"patternDialogEnter", "patternDialogEnter",
"patternDialogConfirm",
"exportEntryDialogQuality",
"aboutDataUsageSectionTitle",
"aboutDataUsageData",
"aboutDataUsageCache",
"aboutDataUsageDatabase",
"aboutDataUsageMisc",
"aboutDataUsageInternal", "aboutDataUsageInternal",
"aboutDataUsageExternal", "aboutDataUsageExternal",
"statePageTitle",
"stateEmpty",
"searchStatesSectionTitle",
"settingsAskEverytime",
"settingsCollectionBurstPatternsTile", "settingsCollectionBurstPatternsTile",
"settingsCollectionBurstPatternsNone", "settingsCollectionBurstPatternsNone",
"settingsViewerShowHistogram", "settingsViewerShowHistogram",
"settingsVideoPlaybackTile", "statsTopStatesSectionTitle"
"settingsVideoPlaybackPageTitle",
"settingsVideoResumptionModeTile",
"settingsVideoResumptionModeDialogTitle",
"settingsVideoBackgroundMode",
"settingsVideoBackgroundModeDialogTitle",
"statsTopStatesSectionTitle",
"tagEditorDiscardDialogMessage",
"tagPlaceholderState"
], ],
"nl": [ "nl": [
@ -8692,13 +8627,6 @@
"tagPlaceholderState" "tagPlaceholderState"
], ],
"uk": [
"overlayHistogramNone",
"overlayHistogramRGB",
"overlayHistogramLuminance",
"settingsViewerShowHistogram"
],
"zh": [ "zh": [
"saveCopyButtonLabel", "saveCopyButtonLabel",
"chipActionGoToPlacePage", "chipActionGoToPlacePage",