Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
deckerst committed Apr 14, 2024
2 parents 2619613 + bf8906a commit ed75dba
Show file tree
Hide file tree
Showing 31 changed files with 114 additions and 105 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.

## <a id="unreleased"></a>[Unreleased]

## <a id="v1.10.9"></a>[v1.10.9] - 2024-04-14

### Fixed

- rendering of SVG with viewbox offset
- superfluous media store reinitialization when relaunching app from launcher

## <a id="v1.10.8"></a>[v1.10.8] - 2024-04-01

### Added
Expand Down
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ android {
namespace 'deckers.thibault.aves'
compileSdk 34
// cf https://developer.android.com/studio/projects/install-ndk#default-ndk-per-agp
ndkVersion '25.1.8937393'
ndkVersion '26.1.10909125'

compileOptions {
sourceCompatibility JavaVersion.VERSION_17
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class SvgRegionFetcher internal constructor(
(regionRect.right + bleedX) / xf,
(regionRect.bottom + bleedY) / yf,
)
effectiveRect.offset(viewBox.left, viewBox.top)

val renderOptions = RenderOptions()
renderOptions.viewBox(effectiveRect.left, effectiveRect.top, effectiveRect.width(), effectiveRect.height())
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<string name="search_shortcut_short_label">搜索</string>
<string name="videos_shortcut_short_label">视频</string>
<string name="analysis_channel_name">媒体扫描</string>
<string name="analysis_notification_default_title">正在扫描媒体库</string>
<string name="analysis_notification_default_title">正在扫描媒体</string>
<string name="analysis_notification_action_stop">停止</string>
<string name="safe_mode_shortcut_short_label">安全模式</string>
</resources>
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
buildscript {
ext {
agp_version = '8.3.1' // same as `settings.ext.agp_version` in `/android/settings.gradle`
agp_version = '8.4.0-rc02' // same as `settings.ext.agp_version` in `/android/settings.gradle`
glide_version = '4.16.0'
// AppGallery Connect plugin versions: https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-sdk-changenotes-0000001058732550
huawei_agconnect_version = '1.9.1.300'
Expand Down
2 changes: 1 addition & 1 deletion android/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pluginManagement {

settings.ext.kotlin_version = '1.9.21'
settings.ext.ksp_version = "$kotlin_version-1.0.15"
settings.ext.agp_version = '8.3.1'
settings.ext.agp_version = '8.4.0-rc02'

includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")

Expand Down
4 changes: 4 additions & 0 deletions fastlane/metadata/android/en-US/changelogs/118.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
In v1.10.9:
- rename in bulk using tags
- repeat a section section section of a video
Full changelog available on GitHub
4 changes: 4 additions & 0 deletions fastlane/metadata/android/en-US/changelogs/11801.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
In v1.10.9:
- rename in bulk using tags
- repeat a section section section of a video
Full changelog available on GitHub
6 changes: 3 additions & 3 deletions fastlane/metadata/android/ko/full_description.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<i>Aves</i> can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like <b>multi-page TIFFs, SVGs, old AVIs and more</b>! It scans your media collection to identify <b>motion photos</b>, <b>panoramas</b> (aka photo spheres), <b>360° videos</b>, as well as <b>GeoTIFF</b> files.
<i>Aves</i>는 일반적인 JPEG 및 MP4를 포함한 모든 종류의 사진과 비디오를 처리할 수 있지만, <b>다중 페이지 TIFF, SVG, 오래된 AVI 등</b>과 같은 보다 이국적인 것도 처리할 수 있습니다! 미디어 컬렉션을 스캔하여 <b>모션 사진</b>, <b>파노라마</b>, <b>360° 비디오</b><b>GeoTIFF</b> 파일을 식별합니다.

<b>Navigation and search</b> is an important part of <i>Aves</i>. The goal is for users to easily flow from albums to photos to tags to maps, etc.
<b>네비게이션과 검색</b><i>Aves</i>의 중요한 부분입니다. 사용자가 앨범에서 사진, 태그에서 지도 등으로 쉽게 흘러갈 수 있도록 하는 것이 목표입니다.

<i>Aves</i> integrates with Android (from KitKat to Android 14, including Android TV) with features such as <b>widgets</b>, <b>app shortcuts</b>, <b>screen saver</b> and <b>global search</b> handling. It also works as a <b>media viewer and picker</b>.
<i>Aves</i>Android(KitKat에서 Android 14까지)에서 사용할 수 있습니다. <b>앱 바로 가기</b><b>글로벌 검색</b>과 같은 기능과 통합됩니다. 또한 <b>미디어 뷰어 및 선택기</b>로도 작동합니다.
2 changes: 1 addition & 1 deletion fastlane/metadata/android/ko/short_description.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Gallery and metadata explorer
갤러리 및 메타데이터 탐색기
6 changes: 4 additions & 2 deletions lib/app_mode.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ enum AppMode {
pickCollectionFiltersExternal,
pickSingleMediaExternal,
pickMultipleMediaExternal,
pickMediaInternal,
pickFilteredMediaInternal,
pickUnfilteredMediaInternal,
pickFilterInternal,
screenSaver,
setWallpaper,
Expand Down Expand Up @@ -40,6 +41,7 @@ extension ExtraAppMode on AppMode {
bool get isPickingMedia => {
AppMode.pickSingleMediaExternal,
AppMode.pickMultipleMediaExternal,
AppMode.pickMediaInternal,
AppMode.pickFilteredMediaInternal,
AppMode.pickUnfilteredMediaInternal,
}.contains(this);
}
10 changes: 9 additions & 1 deletion lib/l10n/app_hu.arb
Original file line number Diff line number Diff line change
Expand Up @@ -1524,5 +1524,13 @@
"setHomeCustomCollection": "Egyéni gyűjtemény",
"@setHomeCustomCollection": {},
"collectionActionSetHome": "Kezdőlapnak beállít",
"@collectionActionSetHome": {}
"@collectionActionSetHome": {},
"stopTooltip": "Állj",
"@stopTooltip": {},
"videoRepeatActionSetStart": "Kezdőpont beállítása",
"@videoRepeatActionSetStart": {},
"videoActionABRepeat": "A-B ismétlés",
"@videoActionABRepeat": {},
"videoRepeatActionSetEnd": "Végpont beállítása",
"@videoRepeatActionSetEnd": {}
}
10 changes: 9 additions & 1 deletion lib/l10n/app_pt.arb
Original file line number Diff line number Diff line change
Expand Up @@ -1366,5 +1366,13 @@
"collectionActionSetHome": "Definir como início",
"@collectionActionSetHome": {},
"setHomeCustomCollection": "Coleção personalizada",
"@setHomeCustomCollection": {}
"@setHomeCustomCollection": {},
"videoActionABRepeat": "Repetição A-B",
"@videoActionABRepeat": {},
"videoRepeatActionSetEnd": "Definir fim",
"@videoRepeatActionSetEnd": {},
"stopTooltip": "Parar",
"@stopTooltip": {},
"videoRepeatActionSetStart": "Definir início",
"@videoRepeatActionSetStart": {}
}
10 changes: 9 additions & 1 deletion lib/l10n/app_tr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -1366,5 +1366,13 @@
"newVaultWarningDialogMessage": "Kilitli albümlere yalnızca bu uygulama erişebilir, başka herhangi bir uygulama erişemez.\n\nBu uygulamayı kaldırır veya verilerini silerseniz kilitli albümlerdeki bütün ögeleri kaybedersiniz.",
"@newVaultWarningDialogMessage": {},
"castDialogTitle": "Yakındaki Cihazlar",
"@castDialogTitle": {}
"@castDialogTitle": {},
"stopTooltip": "Bitir",
"@stopTooltip": {},
"videoActionABRepeat": "A-B döngü",
"@videoActionABRepeat": {},
"videoRepeatActionSetStart": "Başlangıç noktası seç",
"@videoRepeatActionSetStart": {},
"videoRepeatActionSetEnd": "Bitiş noktası seç",
"@videoRepeatActionSetEnd": {}
}
10 changes: 5 additions & 5 deletions lib/l10n/app_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@
"@filterFavouriteLabel": {},
"filterNoDateLabel": "未注明日期",
"@filterNoDateLabel": {},
"filterNoLocationLabel": "未定位",
"filterNoLocationLabel": "无定位",
"@filterNoLocationLabel": {},
"filterNoRatingLabel": "未评分",
"@filterNoRatingLabel": {},
Expand All @@ -187,7 +187,7 @@
"@filterOnThisDayLabel": {},
"filterRecentlyAddedLabel": "最近添加",
"@filterRecentlyAddedLabel": {},
"filterRatingRejectedLabel": "拒绝",
"filterRatingRejectedLabel": "拒绝评分",
"@filterRatingRejectedLabel": {},
"filterTypeAnimatedLabel": "动图",
"@filterTypeAnimatedLabel": {},
Expand Down Expand Up @@ -1045,7 +1045,7 @@
"@viewerInfoBackToViewerTooltip": {},
"viewerInfoUnknown": "未知",
"@viewerInfoUnknown": {},
"viewerInfoLabelDescription": "备注",
"viewerInfoLabelDescription": "描述",
"@viewerInfoLabelDescription": {},
"viewerInfoLabelTitle": "标题",
"@viewerInfoLabelTitle": {},
Expand Down Expand Up @@ -1273,7 +1273,7 @@
"@vaultLockTypePin": {},
"editorTransformCrop": "裁剪",
"@editorTransformCrop": {},
"filterTaggedLabel": "已标记",
"filterTaggedLabel": "有标签",
"@filterTaggedLabel": {},
"statePageTitle": "区域",
"@statePageTitle": {},
Expand Down Expand Up @@ -1309,7 +1309,7 @@
"@statsTopStatesSectionTitle": {},
"settingsVideoPlaybackPageTitle": "播放",
"@settingsVideoPlaybackPageTitle": {},
"filterLocatedLabel": "位于",
"filterLocatedLabel": "有定位",
"@filterLocatedLabel": {},
"settingsAccessibilityShowPinchGestureAlternatives": "显示触屏手势可选方案",
"@settingsAccessibilityShowPinchGestureAlternatives": {},
Expand Down
2 changes: 2 additions & 0 deletions lib/model/app/contributors.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ class Contributors {
Contributor('Marc Amorós', '[email protected]'),
Contributor('elea11', '[email protected]'),
Contributor('しいたけ', '[email protected]'),
Contributor('wanzh', '[email protected]'),
Contributor('ID J', '[email protected]'),
// Contributor('Alvi Khan', '[email protected]'), // Bengali
// Contributor('Htet Oo Hlaing', '[email protected]'), // Burmese
// Contributor('Khant', '[email protected]'), // Burmese
Expand Down
17 changes: 1 addition & 16 deletions lib/widgets/aves_app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -385,14 +385,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
case AppMode.pickMultipleMediaExternal:
_saveTopEntries();
break;
case AppMode.pickCollectionFiltersExternal:
case AppMode.pickMediaInternal:
case AppMode.pickFilterInternal:
case AppMode.screenSaver:
case AppMode.setWallpaper:
case AppMode.slideshow:
case AppMode.view:
case AppMode.edit:
default:
break;
}
case AppLifecycleState.resumed:
Expand Down Expand Up @@ -626,14 +619,6 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
}

void _onNewIntent(Map? intentData) {
debugPrint('$runtimeType onNewIntent with intentData=$intentData');

// do not reset when relaunching the app
if (_appModeNotifier.value == AppMode.main && (intentData == null || intentData.isEmpty == true)) {
reportService.log('Relaunch');
return;
}

reportService.log('New intent data=$intentData');
_navigatorKey.currentState!.pushReplacement(DirectMaterialPageRoute(
settings: const RouteSettings(name: HomePage.routeName),
Expand Down
4 changes: 2 additions & 2 deletions lib/widgets/collection/app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
child: AnimatedBuilder(
animation: collection.filterChangeNotifier,
builder: (context, child) {
final removableFilters = appMode != AppMode.pickMediaInternal;
final canRemoveFilters = appMode != AppMode.pickFilteredMediaInternal;
return Selector<Query, bool>(
selector: (context, query) => query.enabled,
builder: (context, queryEnabled, child) {
Expand All @@ -172,7 +172,7 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
builder: (context, _, child) {
final useTvLayout = settings.useTvLayout;
final actions = _buildActions(context, selection);
final onFilterTap = removableFilters ? collection.removeFilter : null;
final onFilterTap = canRemoveFilters ? collection.removeFilter : null;
return AvesAppBar(
contentHeight: appBarContentHeight,
pinned: context.select<Selection<AvesEntry>, bool>((selection) => selection.isSelecting),
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/collection/collection_grid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ class _CollectionGridContentState extends State<_CollectionGridContent> {
if (selection.isSelecting) {
child = MultiProvider(
providers: [
ListenableProvider<ValueNotifier<AppMode>>.value(value: ValueNotifier(AppMode.pickMediaInternal)),
ListenableProvider<ValueNotifier<AppMode>>.value(value: ValueNotifier(AppMode.pickFilteredMediaInternal)),
ChangeNotifierProvider<Selection<AvesEntry>>.value(value: selection),
],
child: child,
Expand Down
10 changes: 1 addition & 9 deletions lib/widgets/collection/collection_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -201,15 +201,7 @@ class _CollectionPageState extends State<CollectionPage> {
IntentService.submitPickedCollectionFilters(filters);
},
);
case AppMode.main:
case AppMode.pickSingleMediaExternal:
case AppMode.pickMediaInternal:
case AppMode.pickFilterInternal:
case AppMode.screenSaver:
case AppMode.setWallpaper:
case AppMode.slideshow:
case AppMode.view:
case AppMode.edit:
default:
return null;
}
}
Expand Down
3 changes: 2 additions & 1 deletion lib/widgets/collection/grid/tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ class InteractiveTile extends StatelessWidget {
case AppMode.pickMultipleMediaExternal:
final selection = context.read<Selection<AvesEntry>>();
selection.toggleSelection(entry);
case AppMode.pickMediaInternal:
case AppMode.pickFilteredMediaInternal:
case AppMode.pickUnfilteredMediaInternal:
Navigator.maybeOf(context)?.pop(entry);
case AppMode.pickCollectionFiltersExternal:
case AppMode.pickFilterInternal:
Expand Down
1 change: 1 addition & 0 deletions lib/widgets/dialogs/add_shortcut_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ class _AddShortcutDialogState extends State<AddShortcutDialog> {
source: _collection.source,
filters: pickFilters,
),
canRemoveFilters: false,
);
},
fullscreenDialog: true,
Expand Down
20 changes: 15 additions & 5 deletions lib/widgets/dialogs/entry_editors/edit_date_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -322,21 +322,31 @@ class _EditEntryDateDialogState extends State<EditEntryDateDialog> {
));
}

CollectionLens? _createPickCollection() {
final baseCollection = widget.collection;
return baseCollection != null
? CollectionLens(
source: baseCollection.source,
filters: baseCollection.filters,
)
: null;
}

Future<void> _pickCopyItemSource() async {
final _collection = widget.collection;
if (_collection == null) return;
final pickCollection = _createPickCollection();
if (pickCollection == null) return;

final entry = await Navigator.maybeOf(context)?.push<AvesEntry>(
MaterialPageRoute(
settings: const RouteSettings(name: ItemPickPage.routeName),
builder: (context) => ItemPickPage(
collection: CollectionLens(
source: _collection.source,
),
collection: pickCollection,
canRemoveFilters: true,
),
fullscreenDialog: true,
),
);
pickCollection.dispose();
if (entry != null) {
setState(() => _copyItemSource = entry);
}
Expand Down
22 changes: 13 additions & 9 deletions lib/widgets/dialogs/entry_editors/edit_location_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ class _EditEntryLocationDialogState extends State<EditEntryLocationDialog> {
);
}

Future<void> _pickLocation() async {
CollectionLens? _createPickCollection() {
final baseCollection = widget.collection;
final mapCollection = baseCollection != null
return baseCollection != null
? CollectionLens(
source: baseCollection.source,
filters: {
Expand All @@ -180,17 +180,21 @@ class _EditEntryLocationDialogState extends State<EditEntryLocationDialog> {
},
)
: null;
}

Future<void> _pickLocation() async {
final pickCollection = _createPickCollection();
final latLng = await Navigator.maybeOf(context)?.push(
MaterialPageRoute(
settings: const RouteSettings(name: LocationPickPage.routeName),
builder: (context) => LocationPickPage(
collection: mapCollection,
collection: pickCollection,
initialLocation: _mapCoordinates,
),
fullscreenDialog: true,
),
);
mapCollection?.dispose();
pickCollection?.dispose();
if (latLng != null) {
settings.mapDefaultCenter = latLng;
setState(() {
Expand Down Expand Up @@ -218,20 +222,20 @@ class _EditEntryLocationDialogState extends State<EditEntryLocationDialog> {
}

Future<void> _pickCopyItemSource() async {
final _collection = widget.collection;
if (_collection == null) return;
final pickCollection = _createPickCollection();
if (pickCollection == null) return;

final entry = await Navigator.maybeOf(context)?.push<AvesEntry>(
MaterialPageRoute(
settings: const RouteSettings(name: ItemPickPage.routeName),
builder: (context) => ItemPickPage(
collection: CollectionLens(
source: _collection.source,
),
collection: pickCollection,
canRemoveFilters: true,
),
fullscreenDialog: true,
),
);
pickCollection.dispose();
if (entry != null) {
setState(() {
_copyItemSource = entry;
Expand Down
Loading

0 comments on commit ed75dba

Please sign in to comment.