mirror of
https://github.com/immich-app/immich.git
synced 2025-01-23 12:12:45 +01:00
chore(mobile): Mobile make over (#5129)
* chore: added overpass font * Setting page * style: app bar dialog * style: backup controller and album selection page * style: asset grid * blanket fix * blanket fix * remove description input for local only asset * revert * merge main * style: search page * sharing page * text size in sharing page * style: library page * library page * album page + album creation page * Navigationbar * style: minor * update * album bottom sheet * album option page * minor style fix * remove unused fonts * remove fonts in pubspec
This commit is contained in:
parent
f7ada7351e
commit
acf099e481
61 changed files with 337 additions and 410 deletions
mobile
assets/i18n
fonts
WorkSans-Black.ttfWorkSans-Bold.ttfWorkSans-ExtraBold.ttfWorkSans-Italic.ttfWorkSans-Medium.ttfWorkSans-SemiBold.ttfWorkSans.ttf
overpass
lib
modules
album
ui
album_action_outlined_button.dartalbum_thumbnail_card.dartalbum_viewer_appbar.dartalbum_viewer_editable_title.dart
views
asset_viewer/ui
backup
ui
views
home/ui/asset_grid
map/ui
memories
partner/ui
search
ui
views
settings
ui
advanced_settings
asset_list_settings
asset_list_layout_settings.dartasset_list_settings.dartasset_list_storage_indicator.dartasset_list_tiles_per_row.dart
image_viewer_quality_setting
local_storage_settings
notification_setting
settings_switch_list_tile.darttheme_setting
views
shared_link
shared/ui/app_bar_dialog
utils
|
@ -224,7 +224,7 @@
|
||||||
"login_password_changed_success": "Password updated successfully",
|
"login_password_changed_success": "Password updated successfully",
|
||||||
"map_assets_in_bounds": {
|
"map_assets_in_bounds": {
|
||||||
"one": "{} photo",
|
"one": "{} photo",
|
||||||
"many": "{} photos"
|
"other": "{} photos"
|
||||||
},
|
},
|
||||||
"map_cannot_get_user_location": "Cannot get user's location",
|
"map_cannot_get_user_location": "Cannot get user's location",
|
||||||
"map_location_dialog_cancel": "Cancel",
|
"map_location_dialog_cancel": "Cancel",
|
||||||
|
@ -396,7 +396,7 @@
|
||||||
"sharing_page_album": "Shared albums",
|
"sharing_page_album": "Shared albums",
|
||||||
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
||||||
"sharing_page_empty_list": "EMPTY LIST",
|
"sharing_page_empty_list": "EMPTY LIST",
|
||||||
"sharing_silver_appbar_create_shared_album": "Create shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mobile/fonts/overpass/Overpass-Bold.ttf
Normal file
BIN
mobile/fonts/overpass/Overpass-Bold.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/overpass/Overpass-Italic.ttf
Normal file
BIN
mobile/fonts/overpass/Overpass-Italic.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/overpass/Overpass-Medium.ttf
Normal file
BIN
mobile/fonts/overpass/Overpass-Medium.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/overpass/Overpass-Regular.ttf
Normal file
BIN
mobile/fonts/overpass/Overpass-Regular.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/overpass/Overpass-SemiBold.ttf
Normal file
BIN
mobile/fonts/overpass/Overpass-SemiBold.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/overpass/OverpassMono.ttf
Normal file
BIN
mobile/fonts/overpass/OverpassMono.ttf
Normal file
Binary file not shown.
|
@ -16,7 +16,7 @@ class AlbumActionOutlinedButton extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(right: 8.0),
|
padding: const EdgeInsets.only(right: 16.0),
|
||||||
child: OutlinedButton.icon(
|
child: OutlinedButton.icon(
|
||||||
style: OutlinedButton.styleFrom(
|
style: OutlinedButton.styleFrom(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 10),
|
padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 10),
|
||||||
|
@ -32,13 +32,13 @@ class AlbumActionOutlinedButton extends StatelessWidget {
|
||||||
),
|
),
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
iconData,
|
iconData,
|
||||||
size: 15,
|
size: 18,
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
),
|
),
|
||||||
label: Text(
|
label: Text(
|
||||||
labelText,
|
labelText,
|
||||||
style: context.textTheme.labelSmall?.copyWith(
|
style: context.textTheme.labelMedium?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
|
|
|
@ -72,17 +72,13 @@ class AlbumThumbnailCard extends StatelessWidget {
|
||||||
.tr(args: ['${album.assetCount}'])
|
.tr(args: ['${album.assetCount}'])
|
||||||
: 'album_thumbnail_card_items'
|
: 'album_thumbnail_card_items'
|
||||||
.tr(args: ['${album.assetCount}']),
|
.tr(args: ['${album.assetCount}']),
|
||||||
style: TextStyle(
|
style: context.textTheme.bodyMedium,
|
||||||
fontFamily: 'WorkSans',
|
|
||||||
fontSize: 12,
|
|
||||||
color: isDarkTheme ? Colors.white : Colors.black,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
if (owner != null) const TextSpan(text: ' · '),
|
if (owner != null) const TextSpan(text: ' · '),
|
||||||
if (owner != null)
|
if (owner != null)
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: owner,
|
text: owner,
|
||||||
style: context.textTheme.labelSmall,
|
style: context.textTheme.bodyMedium,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -114,11 +110,9 @@ class AlbumThumbnailCard extends StatelessWidget {
|
||||||
width: cardSize,
|
width: cardSize,
|
||||||
child: Text(
|
child: Text(
|
||||||
album.name,
|
album.name,
|
||||||
style: TextStyle(
|
style: context.textTheme.bodyMedium?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
color: context.primaryColor,
|
||||||
color: isDarkTheme
|
fontWeight: FontWeight.w500,
|
||||||
? context.primaryColor
|
|
||||||
: Colors.black,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -210,7 +210,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
leading: const Icon(Icons.ios_share_rounded),
|
leading: const Icon(Icons.ios_share_rounded),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
'album_viewer_appbar_share_to',
|
'album_viewer_appbar_share_to',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: () => onShareAssetsTo(),
|
onTap: () => onShareAssetsTo(),
|
||||||
),
|
),
|
||||||
|
@ -219,7 +219,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
leading: const Icon(Icons.delete_sweep_rounded),
|
leading: const Icon(Icons.delete_sweep_rounded),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
'album_viewer_appbar_share_remove',
|
'album_viewer_appbar_share_remove',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: () => onRemoveFromAlbumPressed(),
|
onTap: () => onRemoveFromAlbumPressed(),
|
||||||
)
|
)
|
||||||
|
@ -232,7 +232,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
leading: const Icon(Icons.delete_forever_rounded),
|
leading: const Icon(Icons.delete_forever_rounded),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
'album_viewer_appbar_share_delete',
|
'album_viewer_appbar_share_delete',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: () => onDeleteAlbumPressed(),
|
onTap: () => onDeleteAlbumPressed(),
|
||||||
)
|
)
|
||||||
|
@ -240,7 +240,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
leading: const Icon(Icons.person_remove_rounded),
|
leading: const Icon(Icons.person_remove_rounded),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
'album_viewer_appbar_share_leave',
|
'album_viewer_appbar_share_leave',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: () => onLeaveAlbumPressed(),
|
onTap: () => onLeaveAlbumPressed(),
|
||||||
),
|
),
|
||||||
|
@ -258,7 +258,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
},
|
},
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"album_viewer_page_share_add_users",
|
"album_viewer_page_share_add_users",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
|
@ -269,7 +269,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
},
|
},
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"control_bottom_app_bar_share",
|
"control_bottom_app_bar_share",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
|
@ -277,7 +277,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
onTap: () => context.autoNavigate(AlbumOptionsRoute(album: album)),
|
onTap: () => context.autoNavigate(AlbumOptionsRoute(album: album)),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"translated_text_options",
|
"translated_text_options",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
@ -291,7 +291,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
||||||
},
|
},
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"share_add_photos",
|
"share_add_photos",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: TextStyle(fontWeight: FontWeight.w500),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
|
@ -44,7 +44,7 @@ class AlbumViewerEditableTitle extends HookConsumerWidget {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
focusNode: titleFocusNode,
|
focusNode: titleFocusNode,
|
||||||
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
|
style: context.textTheme.headlineMedium,
|
||||||
controller: titleTextEditController,
|
controller: titleTextEditController,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
FocusScope.of(context).requestFocus(titleFocusNode);
|
FocusScope.of(context).requestFocus(titleFocusNode);
|
||||||
|
|
|
@ -91,7 +91,8 @@ class AlbumOptionsPage extends HookConsumerWidget {
|
||||||
actions = [
|
actions = [
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.person_remove_rounded),
|
leading: const Icon(Icons.person_remove_rounded),
|
||||||
title: const Text("shared_album_section_people_remove_user").tr(),
|
title: const Text("shared_album_section_people_action_remove_user")
|
||||||
|
.tr(),
|
||||||
onTap: () => removeUserFromAlbum(user),
|
onTap: () => removeUserFromAlbum(user),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
@ -122,18 +123,16 @@ class AlbumOptionsPage extends HookConsumerWidget {
|
||||||
title: Text(
|
title: Text(
|
||||||
album.owner.value?.name ?? "",
|
album.owner.value?.name ?? "",
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
album.owner.value?.email ?? "",
|
album.owner.value?.email ?? "",
|
||||||
style: TextStyle(color: Colors.grey[500]),
|
style: TextStyle(color: Colors.grey[600]),
|
||||||
),
|
),
|
||||||
trailing: const Text(
|
trailing: Text(
|
||||||
"shared_album_section_people_owner_label",
|
"shared_album_section_people_owner_label",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -152,12 +151,12 @@ class AlbumOptionsPage extends HookConsumerWidget {
|
||||||
title: Text(
|
title: Text(
|
||||||
user.name,
|
user.name,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
user.email,
|
user.email,
|
||||||
style: TextStyle(color: Colors.grey[500]),
|
style: TextStyle(color: Colors.grey[600]),
|
||||||
),
|
),
|
||||||
trailing: userId == user.id || isOwner
|
trailing: userId == user.id || isOwner
|
||||||
? const Icon(Icons.more_horiz_rounded)
|
? const Icon(Icons.more_horiz_rounded)
|
||||||
|
@ -209,11 +208,15 @@ class AlbumOptionsPage extends HookConsumerWidget {
|
||||||
dense: true,
|
dense: true,
|
||||||
title: Text(
|
title: Text(
|
||||||
"shared_album_activity_setting_title",
|
"shared_album_activity_setting_title",
|
||||||
style: context.textTheme.labelLarge
|
style: context.textTheme.titleMedium
|
||||||
?.copyWith(fontWeight: FontWeight.bold),
|
?.copyWith(fontWeight: FontWeight.w500),
|
||||||
|
).tr(),
|
||||||
|
subtitle: Text(
|
||||||
|
"shared_album_activity_setting_subtitle",
|
||||||
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
|
color: context.textTheme.labelLarge?.color?.withAlpha(175),
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle:
|
|
||||||
const Text("shared_album_activity_setting_subtitle").tr(),
|
|
||||||
),
|
),
|
||||||
buildSectionTitle("shared_album_section_people_title".tr()),
|
buildSectionTitle("shared_album_section_people_title".tr()),
|
||||||
buildOwnerInfo(),
|
buildOwnerInfo(),
|
||||||
|
|
|
@ -153,10 +153,7 @@ class AlbumViewerPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(left: 8.0),
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
album.name,
|
album.name,
|
||||||
style: const TextStyle(
|
style: context.textTheme.headlineMedium,
|
||||||
fontSize: 24,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -191,10 +188,7 @@ class AlbumViewerPage extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
dateRangeText,
|
dateRangeText,
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontSize: 14,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,10 +94,7 @@ class CreateAlbumPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(top: 200, left: 18),
|
padding: const EdgeInsets.only(top: 200, left: 18),
|
||||||
child: Text(
|
child: Text(
|
||||||
'create_shared_album_page_share_add_assets',
|
'create_shared_album_page_share_add_assets',
|
||||||
style: context.textTheme.displayMedium?.copyWith(
|
style: context.textTheme.labelLarge,
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.normal,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -119,7 +116,7 @@ class CreateAlbumPage extends HookConsumerWidget {
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: context.isDarkTheme
|
color: context.isDarkTheme
|
||||||
? const Color.fromARGB(255, 63, 63, 63)
|
? const Color.fromARGB(255, 63, 63, 63)
|
||||||
: const Color.fromARGB(255, 206, 206, 206),
|
: const Color.fromARGB(255, 129, 129, 129),
|
||||||
),
|
),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(5),
|
borderRadius: BorderRadius.circular(5),
|
||||||
|
@ -134,9 +131,8 @@ class CreateAlbumPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(left: 8.0),
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'create_shared_album_page_share_select_photos',
|
'create_shared_album_page_share_select_photos',
|
||||||
style: context.textTheme.labelLarge?.copyWith(
|
style: context.textTheme.titleMedium?.copyWith(
|
||||||
fontSize: 16,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
@ -222,11 +218,8 @@ class CreateAlbumPage extends HookConsumerWidget {
|
||||||
},
|
},
|
||||||
icon: const Icon(Icons.close_rounded),
|
icon: const Icon(Icons.close_rounded),
|
||||||
),
|
),
|
||||||
title: Text(
|
title: const Text(
|
||||||
'share_create_album',
|
'share_create_album',
|
||||||
style: context.textTheme.displayMedium?.copyWith(
|
|
||||||
color: context.primaryColor,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
actions: [
|
actions: [
|
||||||
if (isSharedAlbum)
|
if (isSharedAlbum)
|
||||||
|
|
|
@ -125,10 +125,8 @@ class LibraryPage extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
options[selectedAlbumSortOrder.value],
|
options[selectedAlbumSortOrder.value],
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontSize: 12.0,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -172,11 +170,9 @@ class LibraryPage extends HookConsumerWidget {
|
||||||
top: 8.0,
|
top: 8.0,
|
||||||
bottom: 16,
|
bottom: 16,
|
||||||
),
|
),
|
||||||
child: const Text(
|
child: Text(
|
||||||
'library_page_new_album',
|
'library_page_new_album',
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -198,9 +194,9 @@ class LibraryPage extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
label,
|
label,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
color: context.isDarkTheme
|
||||||
fontSize: 13.0,
|
? Colors.white
|
||||||
color: isDarkTheme ? Colors.white : Colors.grey[800],
|
: Colors.black.withAlpha(200),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -278,9 +274,11 @@ class LibraryPage extends HookConsumerWidget {
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
const Text(
|
Text(
|
||||||
'library_page_albums',
|
'library_page_albums',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
buildSortButton(),
|
buildSortButton(),
|
||||||
],
|
],
|
||||||
|
@ -326,9 +324,11 @@ class LibraryPage extends HookConsumerWidget {
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
const Text(
|
Text(
|
||||||
'library_page_device_albums',
|
'library_page_device_albums',
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -80,25 +80,20 @@ class SharingPage extends HookConsumerWidget {
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
style: context.textTheme.bodyMedium?.copyWith(
|
style: context.textTheme.bodyMedium?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
color: context.primaryColor,
|
||||||
color:
|
fontWeight: FontWeight.w500,
|
||||||
context.isDarkTheme ? context.primaryColor : Colors.black,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: isOwner
|
subtitle: isOwner
|
||||||
? Text(
|
? Text(
|
||||||
'album_thumbnail_owned'.tr(),
|
'album_thumbnail_owned'.tr(),
|
||||||
style: const TextStyle(
|
style: context.textTheme.bodyMedium,
|
||||||
fontSize: 12.0,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
: album.ownerName != null
|
: album.ownerName != null
|
||||||
? Text(
|
? Text(
|
||||||
'album_thumbnail_shared_by'
|
'album_thumbnail_shared_by'
|
||||||
.tr(args: [album.ownerName!]),
|
.tr(args: [album.ownerName!]),
|
||||||
style: const TextStyle(
|
style: context.textTheme.bodyMedium,
|
||||||
fontSize: 12.0,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
@ -137,8 +132,8 @@ class SharingPage extends HookConsumerWidget {
|
||||||
"sharing_silver_appbar_create_shared_album",
|
"sharing_silver_appbar_create_shared_album",
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 11,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
@ -154,8 +149,8 @@ class SharingPage extends HookConsumerWidget {
|
||||||
label: const Text(
|
label: const Text(
|
||||||
"sharing_silver_appbar_shared_links",
|
"sharing_silver_appbar_shared_links",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 11,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
).tr(),
|
).tr(),
|
||||||
|
@ -236,9 +231,11 @@ class SharingPage extends HookConsumerWidget {
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
padding: const EdgeInsets.all(12),
|
padding: const EdgeInsets.all(12),
|
||||||
sliver: SliverToBoxAdapter(
|
sliver: SliverToBoxAdapter(
|
||||||
child: const Text(
|
child: Text(
|
||||||
"partner_page_title",
|
"partner_page_title",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold),
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -246,10 +243,10 @@ class SharingPage extends HookConsumerWidget {
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
padding: const EdgeInsets.all(12),
|
padding: const EdgeInsets.all(12),
|
||||||
sliver: SliverToBoxAdapter(
|
sliver: SliverToBoxAdapter(
|
||||||
child: const Text(
|
child: Text(
|
||||||
"sharing_page_album",
|
"sharing_page_album",
|
||||||
style: TextStyle(
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
|
|
@ -93,15 +93,11 @@ class DescriptionInput extends HookConsumerWidget {
|
||||||
maxLines: null,
|
maxLines: null,
|
||||||
keyboardType: TextInputType.multiline,
|
keyboardType: TextInputType.multiline,
|
||||||
controller: controller,
|
controller: controller,
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: 'description_input_hint_text'.tr(),
|
hintText: 'description_input_hint_text'.tr(),
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
hintStyle: TextStyle(
|
hintStyle: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.normal,
|
|
||||||
fontSize: 12,
|
|
||||||
color: textColor.withOpacity(0.5),
|
color: textColor.withOpacity(0.5),
|
||||||
),
|
),
|
||||||
suffixIcon: suffixIcon,
|
suffixIcon: suffixIcon,
|
||||||
|
|
|
@ -193,21 +193,15 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
"exif_bottom_sheet_location",
|
"exif_bottom_sheet_location",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelMedium?.copyWith(
|
||||||
fontSize: 11,
|
color: context.textTheme.labelMedium?.color?.withAlpha(200),
|
||||||
color: textColor,
|
fontWeight: FontWeight.w600,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
buildMap(),
|
buildMap(),
|
||||||
RichText(
|
RichText(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: textColor,
|
|
||||||
fontFamily: 'WorkSans',
|
|
||||||
),
|
|
||||||
children: [
|
children: [
|
||||||
if (exifInfo != null && exifInfo.city != null)
|
if (exifInfo != null && exifInfo.city != null)
|
||||||
TextSpan(
|
TextSpan(
|
||||||
|
@ -228,7 +222,9 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
"${exifInfo!.latitude!.toStringAsFixed(4)}, ${exifInfo.longitude!.toStringAsFixed(4)}",
|
"${exifInfo!.latitude!.toStringAsFixed(4)}, ${exifInfo.longitude!.toStringAsFixed(4)}",
|
||||||
style: const TextStyle(fontSize: 12),
|
style: context.textTheme.labelMedium?.copyWith(
|
||||||
|
color: context.textTheme.labelMedium?.color?.withAlpha(150),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -258,10 +254,7 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
titleAlignment: ListTileTitleAlignment.center,
|
titleAlignment: ListTileTitleAlignment.center,
|
||||||
title: Text(
|
title: Text(
|
||||||
title,
|
title,
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: textColor,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
subtitle: subtitle,
|
subtitle: subtitle,
|
||||||
);
|
);
|
||||||
|
@ -278,7 +271,7 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
// There is both filename and size information
|
// There is both filename and size information
|
||||||
return createImagePropertiesListStyle(
|
return createImagePropertiesListStyle(
|
||||||
asset.fileName,
|
asset.fileName,
|
||||||
Text(imgSizeString),
|
Text(imgSizeString, style: context.textTheme.bodySmall),
|
||||||
);
|
);
|
||||||
} else if (imgSizeString != null && asset.fileName.isEmpty) {
|
} else if (imgSizeString != null && asset.fileName.isEmpty) {
|
||||||
// There is only size information
|
// There is only size information
|
||||||
|
@ -305,10 +298,9 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(bottom: 8.0),
|
padding: const EdgeInsets.only(bottom: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
"exif_bottom_sheet_details",
|
"exif_bottom_sheet_details",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelMedium?.copyWith(
|
||||||
fontSize: 11,
|
color: context.textTheme.labelMedium?.color?.withAlpha(200),
|
||||||
color: textColor,
|
fontWeight: FontWeight.w600,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
@ -323,10 +315,7 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
"${exifInfo!.make} ${exifInfo.model}",
|
"${exifInfo!.make} ${exifInfo.model}",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
color: textColor,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
subtitle: exifInfo.f != null ||
|
subtitle: exifInfo.f != null ||
|
||||||
exifInfo.exposureSeconds != null ||
|
exifInfo.exposureSeconds != null ||
|
||||||
|
@ -334,6 +323,7 @@ class ExifBottomSheet extends HookConsumerWidget {
|
||||||
exifInfo.iso != null
|
exifInfo.iso != null
|
||||||
? Text(
|
? Text(
|
||||||
"ƒ/${exifInfo.fNumber} ${exifInfo.exposureTime} ${exifInfo.focalLength} mm ISO ${exifInfo.iso ?? ''} ",
|
"ƒ/${exifInfo.fNumber} ${exifInfo.exposureTime} ${exifInfo.focalLength} mm ISO ${exifInfo.iso ?? ''} ",
|
||||||
|
style: context.textTheme.bodySmall,
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
|
|
|
@ -28,17 +28,17 @@ class BackupInfoCard extends StatelessWidget {
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
borderOnForeground: false,
|
borderOnForeground: false,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
minVerticalPadding: 15,
|
minVerticalPadding: 18,
|
||||||
isThreeLine: true,
|
isThreeLine: true,
|
||||||
title: Text(
|
title: Text(
|
||||||
title,
|
title,
|
||||||
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 20),
|
style: context.textTheme.titleMedium,
|
||||||
),
|
),
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 4.0, right: 18.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
subtitle,
|
subtitle,
|
||||||
style: const TextStyle(fontSize: 12),
|
style: context.textTheme.bodyMedium,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
trailing: Column(
|
trailing: Column(
|
||||||
|
@ -46,9 +46,12 @@ class BackupInfoCard extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
info,
|
info,
|
||||||
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
|
style: context.textTheme.titleLarge,
|
||||||
),
|
),
|
||||||
const Text("backup_info_card_assets").tr(),
|
Text(
|
||||||
|
"backup_info_card_assets",
|
||||||
|
style: context.textTheme.labelLarge,
|
||||||
|
).tr(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -188,9 +188,9 @@ class CurrentUploadingAssetInfoBox extends HookConsumerWidget {
|
||||||
title: Row(
|
title: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
const Text(
|
Text(
|
||||||
"backup_controller_page_uploading_file_info",
|
"backup_controller_page_uploading_file_info",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
|
style: context.textTheme.titleSmall,
|
||||||
).tr(),
|
).tr(),
|
||||||
if (ref.watch(errorBackupListProvider).isNotEmpty) buildErrorChip(),
|
if (ref.watch(errorBackupListProvider).isNotEmpty) buildErrorChip(),
|
||||||
],
|
],
|
||||||
|
|
|
@ -100,7 +100,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
|
||||||
label: Text(
|
label: Text(
|
||||||
album.name,
|
album.name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10,
|
fontSize: 12,
|
||||||
color: isDarkTheme ? Colors.black : Colors.white,
|
color: isDarkTheme ? Colors.black : Colors.white,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
|
@ -134,7 +134,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
|
||||||
label: Text(
|
label: Text(
|
||||||
album.name,
|
album.name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10,
|
fontSize: 12,
|
||||||
color: isDarkTheme ? Colors.black : immichBackgroundColor,
|
color: isDarkTheme ? Colors.black : immichBackgroundColor,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
|
@ -203,7 +203,6 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"backup_album_selection_page_select_albums",
|
"backup_album_selection_page_select_albums",
|
||||||
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
),
|
),
|
||||||
|
@ -219,12 +218,9 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
|
||||||
vertical: 8.0,
|
vertical: 8.0,
|
||||||
horizontal: 16.0,
|
horizontal: 16.0,
|
||||||
),
|
),
|
||||||
child: const Text(
|
child: Text(
|
||||||
"backup_album_selection_page_selection_info",
|
"backup_album_selection_page_selection_info",
|
||||||
style: TextStyle(
|
style: context.textTheme.titleSmall,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
// Selected Album Chips
|
// Selected Album Chips
|
||||||
|
@ -250,19 +246,14 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
|
||||||
.toString(),
|
.toString(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
style: const TextStyle(
|
style: context.textTheme.titleSmall,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
"backup_album_selection_page_albums_tap",
|
"backup_album_selection_page_albums_tap",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontSize: 12,
|
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
|
|
@ -193,7 +193,7 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
: const Icon(Icons.cloud_off_rounded),
|
: const Icon(Icons.cloud_off_rounded),
|
||||||
title: Text(
|
title: Text(
|
||||||
backUpOption,
|
backUpOption,
|
||||||
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
|
style: context.textTheme.titleSmall,
|
||||||
),
|
),
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||||
|
@ -213,9 +213,8 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
.setAutoBackup(!isAutoBackup),
|
.setAutoBackup(!isAutoBackup),
|
||||||
child: Text(
|
child: Text(
|
||||||
backupBtnText,
|
backupBtnText,
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
color: context.isDarkTheme ? Colors.black : Colors.white,
|
||||||
fontSize: 12,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -335,7 +334,7 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
isBackgroundEnabled
|
isBackgroundEnabled
|
||||||
? "backup_controller_page_background_is_on"
|
? "backup_controller_page_background_is_on"
|
||||||
: "backup_controller_page_background_is_off",
|
: "backup_controller_page_background_is_off",
|
||||||
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
|
style: context.textTheme.titleSmall,
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: Column(
|
subtitle: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
@ -426,9 +425,8 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
isBackgroundEnabled
|
isBackgroundEnabled
|
||||||
? "backup_controller_page_background_turn_off"
|
? "backup_controller_page_background_turn_off"
|
||||||
: "backup_controller_page_background_turn_on",
|
: "backup_controller_page_background_turn_on",
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
color: context.isDarkTheme ? Colors.black : Colors.white,
|
||||||
fontSize: 12,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
@ -511,10 +509,8 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
text.trim().substring(0, text.length - 2),
|
text.trim().substring(0, text.length - 2),
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -523,10 +519,8 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
"backup_controller_page_none_selected".tr(),
|
"backup_controller_page_none_selected".tr(),
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -546,10 +540,8 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
text.trim().substring(0, text.length - 2),
|
text.trim().substring(0, text.length - 2),
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
color: Colors.red[300],
|
color: Colors.red[300],
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -559,55 +551,57 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
buildFolderSelectionTile() {
|
buildFolderSelectionTile() {
|
||||||
return Card(
|
return Padding(
|
||||||
shape: RoundedRectangleBorder(
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
borderRadius: BorderRadius.circular(20),
|
child: Card(
|
||||||
side: BorderSide(
|
shape: RoundedRectangleBorder(
|
||||||
color: context.isDarkTheme
|
borderRadius: BorderRadius.circular(20),
|
||||||
? const Color.fromARGB(255, 56, 56, 56)
|
side: BorderSide(
|
||||||
: Colors.black12,
|
color: context.isDarkTheme
|
||||||
width: 1,
|
? const Color.fromARGB(255, 56, 56, 56)
|
||||||
),
|
: Colors.black12,
|
||||||
),
|
width: 1,
|
||||||
elevation: 0,
|
|
||||||
borderOnForeground: false,
|
|
||||||
child: ListTile(
|
|
||||||
minVerticalPadding: 15,
|
|
||||||
title: const Text(
|
|
||||||
"backup_controller_page_albums",
|
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20),
|
|
||||||
).tr(),
|
|
||||||
subtitle: Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
const Text(
|
|
||||||
"backup_controller_page_to_backup",
|
|
||||||
style: TextStyle(fontSize: 12),
|
|
||||||
).tr(),
|
|
||||||
buildSelectedAlbumName(),
|
|
||||||
buildExcludedAlbumName(),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
trailing: ElevatedButton(
|
elevation: 0,
|
||||||
onPressed: () async {
|
borderOnForeground: false,
|
||||||
await context.autoPush(const BackupAlbumSelectionRoute());
|
child: ListTile(
|
||||||
// waited until returning from selection
|
minVerticalPadding: 18,
|
||||||
await ref
|
title: Text(
|
||||||
.read(backupProvider.notifier)
|
"backup_controller_page_albums",
|
||||||
.backupAlbumSelectionDone();
|
style: context.textTheme.titleMedium,
|
||||||
// waited until backup albums are stored in DB
|
|
||||||
ref.read(albumProvider.notifier).getDeviceAlbums();
|
|
||||||
},
|
|
||||||
child: const Text(
|
|
||||||
"backup_controller_page_select",
|
|
||||||
style: TextStyle(
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
|
subtitle: Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
"backup_controller_page_to_backup",
|
||||||
|
style: context.textTheme.bodyMedium,
|
||||||
|
).tr(),
|
||||||
|
buildSelectedAlbumName(),
|
||||||
|
buildExcludedAlbumName(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
trailing: ElevatedButton(
|
||||||
|
onPressed: () async {
|
||||||
|
await context.autoPush(const BackupAlbumSelectionRoute());
|
||||||
|
// waited until returning from selection
|
||||||
|
await ref
|
||||||
|
.read(backupProvider.notifier)
|
||||||
|
.backupAlbumSelectionDone();
|
||||||
|
// waited until backup albums are stored in DB
|
||||||
|
ref.read(albumProvider.notifier).getDeviceAlbums();
|
||||||
|
},
|
||||||
|
child: const Text(
|
||||||
|
"backup_controller_page_select",
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
).tr(),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -657,7 +651,7 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
child: const Text(
|
child: const Text(
|
||||||
"backup_controller_page_start_backup",
|
"backup_controller_page_start_backup",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
|
@ -680,7 +674,6 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
title: const Text(
|
title: const Text(
|
||||||
"backup_controller_page_backup",
|
"backup_controller_page_backup",
|
||||||
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
@ -735,7 +728,6 @@ class BackupControllerPage extends HookConsumerWidget {
|
||||||
if (showBackupFix) const Divider(),
|
if (showBackupFix) const Divider(),
|
||||||
if (showBackupFix) buildCheckCorruptBackups(),
|
if (showBackupFix) buildCheckCorruptBackups(),
|
||||||
const Divider(),
|
const Divider(),
|
||||||
const Divider(),
|
|
||||||
const CurrentUploadingAssetInfoBox(),
|
const CurrentUploadingAssetInfoBox(),
|
||||||
if (!hasExclusiveAccess) buildBackgroundBackupInfo(),
|
if (!hasExclusiveAccess) buildBackgroundBackupInfo(),
|
||||||
buildBackupButton(),
|
buildBackupButton(),
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
|
import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
|
||||||
|
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
||||||
|
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
||||||
|
|
||||||
class GroupDividerTitle extends ConsumerWidget {
|
class GroupDividerTitle extends HookConsumerWidget {
|
||||||
const GroupDividerTitle({
|
const GroupDividerTitle({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.text,
|
required this.text,
|
||||||
|
@ -21,6 +25,18 @@ class GroupDividerTitle extends ConsumerWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
|
final appSettingService = ref.watch(appSettingsServiceProvider);
|
||||||
|
final groupBy = useState(GroupAssetsBy.day);
|
||||||
|
|
||||||
|
useEffect(
|
||||||
|
() {
|
||||||
|
groupBy.value = GroupAssetsBy.values[
|
||||||
|
appSettingService.getSetting<int>(AppSettingsEnum.groupAssetsBy)];
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
void handleTitleIconClick() {
|
void handleTitleIconClick() {
|
||||||
HapticFeedback.heavyImpact();
|
HapticFeedback.heavyImpact();
|
||||||
if (selected) {
|
if (selected) {
|
||||||
|
@ -31,8 +47,8 @@ class GroupDividerTitle extends ConsumerWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: 12.0,
|
top: groupBy.value == GroupAssetsBy.month ? 32.0 : 16.0,
|
||||||
bottom: 16.0,
|
bottom: 16.0,
|
||||||
left: 12.0,
|
left: 12.0,
|
||||||
right: 12.0,
|
right: 12.0,
|
||||||
|
@ -41,10 +57,14 @@ class GroupDividerTitle extends ConsumerWidget {
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
text,
|
text,
|
||||||
style: const TextStyle(
|
style: groupBy.value == GroupAssetsBy.month
|
||||||
fontSize: 14,
|
? context.textTheme.bodyLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontSize: 24.0,
|
||||||
),
|
)
|
||||||
|
: context.textTheme.labelLarge?.copyWith(
|
||||||
|
color: context.textTheme.labelLarge?.color?.withAlpha(250),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
|
|
|
@ -222,10 +222,9 @@ class ImmichAssetGridViewState extends State<ImmichAssetGridView> {
|
||||||
padding: const EdgeInsets.only(left: 12.0, top: 24.0),
|
padding: const EdgeInsets.only(left: 12.0, top: 24.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
title,
|
title,
|
||||||
style: TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 26,
|
fontSize: 26,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
color: context.textTheme.displayLarge?.color,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -179,7 +179,7 @@ class AssetsInBoundBottomSheetState extends ConsumerState<MapPageBottomSheet> {
|
||||||
? "map_assets_in_bounds".plural(assetsInBound.value.length)
|
? "map_assets_in_bounds".plural(assetsInBound.value.length)
|
||||||
: "map_no_assets_in_bounds".tr();
|
: "map_no_assets_in_bounds".tr();
|
||||||
final dragHandle = Container(
|
final dragHandle = Container(
|
||||||
height: 60,
|
height: 70,
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: isDarkTheme ? Colors.grey[900] : Colors.grey[100],
|
color: isDarkTheme ? Colors.grey[900] : Colors.grey[100],
|
||||||
|
@ -195,11 +195,7 @@ class AssetsInBoundBottomSheetState extends ConsumerState<MapPageBottomSheet> {
|
||||||
const SizedBox(height: 15),
|
const SizedBox(height: 15),
|
||||||
Text(
|
Text(
|
||||||
textToDisplay,
|
textToDisplay,
|
||||||
style: TextStyle(
|
style: context.textTheme.bodyLarge,
|
||||||
fontSize: 16,
|
|
||||||
color: context.textTheme.displayLarge?.color,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
height: 10,
|
height: 10,
|
||||||
|
|
|
@ -134,12 +134,16 @@ class MapSettingsDialog extends HookConsumerWidget {
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
mapSettings.isDarkTheme ? Colors.grey[100] : Colors.grey[700],
|
mapSettings.isDarkTheme ? Colors.grey[100] : Colors.grey[700],
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Padding(
|
||||||
"map_settings_dialog_cancel".tr(),
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
style: theme.textTheme.labelSmall?.copyWith(
|
child: Text(
|
||||||
fontWeight: FontWeight.bold,
|
"map_settings_dialog_cancel".tr(),
|
||||||
color:
|
style: theme.textTheme.labelLarge?.copyWith(
|
||||||
mapSettings.isDarkTheme ? Colors.grey[900] : Colors.grey[100],
|
fontWeight: FontWeight.w500,
|
||||||
|
color: mapSettings.isDarkTheme
|
||||||
|
? Colors.grey[900]
|
||||||
|
: Colors.grey[100],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -155,11 +159,14 @@ class MapSettingsDialog extends HookConsumerWidget {
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
backgroundColor: theme.primaryColor,
|
backgroundColor: theme.primaryColor,
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Padding(
|
||||||
"map_settings_dialog_save".tr(),
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
style: theme.textTheme.labelSmall?.copyWith(
|
child: Text(
|
||||||
fontWeight: FontWeight.bold,
|
"map_settings_dialog_save".tr(),
|
||||||
color: theme.primaryTextTheme.labelLarge?.color,
|
style: theme.textTheme.labelLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: theme.primaryTextTheme.labelLarge?.color,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:ui';
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/shared/models/asset.dart';
|
import 'package:immich_mobile/shared/models/asset.dart';
|
||||||
import 'package:immich_mobile/shared/models/store.dart';
|
import 'package:immich_mobile/shared/models/store.dart';
|
||||||
import 'package:immich_mobile/shared/ui/immich_image.dart';
|
import 'package:immich_mobile/shared/ui/immich_image.dart';
|
||||||
|
@ -34,10 +35,9 @@ class MemoryCard extends HookConsumerWidget {
|
||||||
buildTitle() {
|
buildTitle() {
|
||||||
return Text(
|
return Text(
|
||||||
title,
|
title,
|
||||||
style: const TextStyle(
|
style: context.textTheme.headlineMedium?.copyWith(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 24.0,
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ class MemoryLane extends HookConsumerWidget {
|
||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
child: ColorFiltered(
|
child: ColorFiltered(
|
||||||
colorFilter: ColorFilter.mode(
|
colorFilter: ColorFilter.mode(
|
||||||
Colors.black.withOpacity(0.1),
|
Colors.black.withOpacity(0.2),
|
||||||
BlendMode.darken,
|
BlendMode.darken,
|
||||||
),
|
),
|
||||||
child: ImmichImage(
|
child: ImmichImage(
|
||||||
|
@ -71,9 +71,9 @@ class MemoryLane extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
memory.title,
|
memory.title,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w600,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 14,
|
fontSize: 15,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -138,8 +138,8 @@ class MemoryPage extends HookConsumerWidget {
|
||||||
memory.title,
|
memory.title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.grey[400],
|
color: Colors.grey[400],
|
||||||
fontSize: 11.0,
|
fontSize: 13.0,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
|
@ -148,7 +148,7 @@ class MemoryPage extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 14.0,
|
fontSize: 15.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -28,15 +28,11 @@ class PartnerList extends HookConsumerWidget {
|
||||||
leading: userAvatar(context, p, radius: 24),
|
leading: userAvatar(context, p, radius: 24),
|
||||||
title: Text(
|
title: Text(
|
||||||
"${p.name}'s photos",
|
"${p.name}'s photos",
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
trailing: Text(
|
trailing: Text(
|
||||||
"View all",
|
"View all",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -84,8 +84,7 @@ class CuratedPeopleRow extends StatelessWidget {
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
"Add name",
|
"Add name",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -98,10 +97,7 @@ class CuratedPeopleRow extends StatelessWidget {
|
||||||
person.label,
|
person.label,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
style: const TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 13.0,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -58,10 +58,8 @@ class ImmichSearchBar extends HookConsumerWidget
|
||||||
},
|
},
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: 'search_bar_hint'.tr(),
|
hintText: 'search_bar_hint'.tr(),
|
||||||
hintStyle: context.textTheme.titleSmall?.copyWith(
|
hintStyle: context.textTheme.bodyLarge?.copyWith(
|
||||||
color: context.themeData.colorScheme.onSurface.withOpacity(0.5),
|
color: context.themeData.colorScheme.onSurface.withOpacity(0.75),
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
),
|
||||||
enabledBorder: const UnderlineInputBorder(
|
enabledBorder: const UnderlineInputBorder(
|
||||||
borderSide: BorderSide(color: Colors.transparent),
|
borderSide: BorderSide(color: Colors.transparent),
|
||||||
|
|
|
@ -27,16 +27,16 @@ class SearchRowTitle extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
title,
|
title,
|
||||||
style: context.textTheme.titleSmall,
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: onViewAllPressed,
|
onPressed: onViewAllPressed,
|
||||||
child: Text(
|
child: Text(
|
||||||
'search_page_view_all_button',
|
'search_page_view_all_button',
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14.0,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
|
|
@ -15,13 +15,8 @@ class AllPeoplePage extends HookConsumerWidget {
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(
|
title: const Text(
|
||||||
'all_people_page_title',
|
'all_people_page_title',
|
||||||
style: TextStyle(
|
|
||||||
color: context.primaryColor,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 16.0,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
onPressed: () => context.autoPop(),
|
onPressed: () => context.autoPop(),
|
||||||
|
|
|
@ -18,13 +18,8 @@ class CuratedLocationPage extends HookConsumerWidget {
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(
|
title: const Text(
|
||||||
'curated_location_page_title',
|
'curated_location_page_title',
|
||||||
style: TextStyle(
|
|
||||||
color: context.primaryColor,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 16.0,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
onPressed: () => context.autoPop(),
|
onPressed: () => context.autoPop(),
|
||||||
|
|
|
@ -33,8 +33,8 @@ class SearchPage extends HookConsumerWidget {
|
||||||
double imageSize = math.min(context.width / 3, 150);
|
double imageSize = math.min(context.width / 3, 150);
|
||||||
|
|
||||||
TextStyle categoryTitleStyle = const TextStyle(
|
TextStyle categoryTitleStyle = const TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 14.0,
|
fontSize: 15.0,
|
||||||
);
|
);
|
||||||
|
|
||||||
Color categoryIconColor = context.isDarkTheme ? Colors.white : Colors.black;
|
Color categoryIconColor = context.isDarkTheme ? Colors.white : Colors.black;
|
||||||
|
@ -156,7 +156,9 @@ class SearchPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
child: Text(
|
child: Text(
|
||||||
'search_page_your_activity',
|
'search_page_your_activity',
|
||||||
style: context.textTheme.titleSmall,
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
|
@ -186,11 +188,15 @@ class SearchPage extends HookConsumerWidget {
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'search_page_categories',
|
'search_page_categories',
|
||||||
style: context.textTheme.titleSmall,
|
style: context.textTheme.bodyLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text('search_page_screenshots', style: categoryTitleStyle).tr(),
|
title:
|
||||||
|
Text('search_page_screenshots', style: categoryTitleStyle)
|
||||||
|
.tr(),
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
Icons.screenshot,
|
Icons.screenshot,
|
||||||
color: categoryIconColor,
|
color: categoryIconColor,
|
||||||
|
@ -255,7 +261,7 @@ class CategoryDivider extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const Padding(
|
return const Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
left: 72,
|
left: 56,
|
||||||
right: 16,
|
right: 16,
|
||||||
),
|
),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
|
|
|
@ -45,17 +45,12 @@ class AdvancedSettings extends HookConsumerWidget {
|
||||||
|
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
"advanced_settings_tile_title",
|
"advanced_settings_tile_title",
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
"advanced_settings_tile_subtitle",
|
"advanced_settings_tile_subtitle",
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: [
|
children: [
|
||||||
SettingsSwitchListTile(
|
SettingsSwitchListTile(
|
||||||
|
|
|
@ -54,8 +54,7 @@ class LayoutSettings extends HookConsumerWidget {
|
||||||
activeColor: context.primaryColor,
|
activeColor: context.primaryColor,
|
||||||
title: Text(
|
title: Text(
|
||||||
"asset_list_layout_settings_dynamic_layout_title",
|
"asset_list_layout_settings_dynamic_layout_title",
|
||||||
style: context.textTheme.labelLarge
|
style: context.textTheme.labelLarge,
|
||||||
?.copyWith(fontWeight: FontWeight.bold),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
onChanged: switchChanged,
|
onChanged: switchChanged,
|
||||||
value: useDynamicLayout.value,
|
value: useDynamicLayout.value,
|
||||||
|
|
|
@ -14,17 +14,12 @@ class AssetListSettings extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
'asset_list_settings_title',
|
'asset_list_settings_title',
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
'asset_list_settings_subtitle',
|
'asset_list_settings_subtitle',
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: const [
|
children: const [
|
||||||
TilesPerRow(),
|
TilesPerRow(),
|
||||||
|
|
|
@ -37,8 +37,7 @@ class StorageIndicator extends HookConsumerWidget {
|
||||||
activeColor: context.primaryColor,
|
activeColor: context.primaryColor,
|
||||||
title: Text(
|
title: Text(
|
||||||
"theme_setting_asset_list_storage_indicator_title",
|
"theme_setting_asset_list_storage_indicator_title",
|
||||||
style:
|
style: context.textTheme.labelLarge,
|
||||||
context.textTheme.labelLarge?.copyWith(fontWeight: FontWeight.bold),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
onChanged: switchChanged,
|
onChanged: switchChanged,
|
||||||
value: showStorageIndicator.value,
|
value: showStorageIndicator.value,
|
||||||
|
|
|
@ -37,12 +37,9 @@ class TilesPerRow extends HookConsumerWidget {
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
ListTile(
|
||||||
title: const Text(
|
title: Text(
|
||||||
"theme_setting_asset_list_tiles_per_row_title",
|
"theme_setting_asset_list_tiles_per_row_title",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge,
|
||||||
fontSize: 14,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(args: ["${itemsValue.value.toInt()}"]),
|
).tr(args: ["${itemsValue.value.toInt()}"]),
|
||||||
),
|
),
|
||||||
Slider(
|
Slider(
|
||||||
|
|
|
@ -28,22 +28,19 @@ class ImageViewerQualitySetting extends HookConsumerWidget {
|
||||||
|
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
'theme_setting_image_viewer_quality_title',
|
'theme_setting_image_viewer_quality_title',
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
'theme_setting_image_viewer_quality_subtitle',
|
'theme_setting_image_viewer_quality_subtitle',
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
ListTile(
|
||||||
title: const Text('setting_image_viewer_help').tr(),
|
title: Text(
|
||||||
dense: true,
|
'setting_image_viewer_help',
|
||||||
|
style: context.textTheme.bodyMedium,
|
||||||
|
).tr(),
|
||||||
),
|
),
|
||||||
SettingsSwitchListTile(
|
SettingsSwitchListTile(
|
||||||
appSettingService: settings,
|
appSettingService: settings,
|
||||||
|
|
|
@ -27,30 +27,21 @@ class LocalStorageSettings extends HookConsumerWidget {
|
||||||
|
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
"cache_settings_tile_title",
|
"cache_settings_tile_title",
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
"cache_settings_tile_subtitle",
|
"cache_settings_tile_subtitle",
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
"cache_settings_duplicated_assets_title",
|
"cache_settings_duplicated_assets_title",
|
||||||
style: context.textTheme.labelLarge
|
style: context.textTheme.titleSmall,
|
||||||
?.copyWith(fontWeight: FontWeight.bold),
|
|
||||||
).tr(args: ["${cacheItemCount.value}"]),
|
).tr(args: ["${cacheItemCount.value}"]),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
"cache_settings_duplicated_assets_subtitle",
|
"cache_settings_duplicated_assets_subtitle",
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
trailing: TextButton(
|
trailing: TextButton(
|
||||||
onPressed: cacheItemCount.value > 0 ? clearCache : null,
|
onPressed: cacheItemCount.value > 0 ? clearCache : null,
|
||||||
|
|
|
@ -67,17 +67,12 @@ class NotificationSetting extends HookConsumerWidget {
|
||||||
final String formattedValue = _formatSliderValue(sliderValue.value);
|
final String formattedValue = _formatSliderValue(sliderValue.value);
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
'setting_notifications_title',
|
'setting_notifications_title',
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
'setting_notifications_subtitle',
|
'setting_notifications_subtitle',
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: [
|
children: [
|
||||||
if (!hasPermission)
|
if (!hasPermission)
|
||||||
|
|
|
@ -40,10 +40,14 @@ class SettingsSwitchListTile extends StatelessWidget {
|
||||||
dense: true,
|
dense: true,
|
||||||
title: Text(
|
title: Text(
|
||||||
title,
|
title,
|
||||||
style:
|
style: context.textTheme.titleSmall,
|
||||||
context.textTheme.labelLarge?.copyWith(fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
subtitle: subtitle != null ? Text(subtitle!) : null,
|
subtitle: subtitle != null
|
||||||
|
? Text(
|
||||||
|
subtitle!,
|
||||||
|
style: context.textTheme.bodyMedium,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,17 +26,12 @@ class ThemeSetting extends HookConsumerWidget {
|
||||||
|
|
||||||
return ExpansionTile(
|
return ExpansionTile(
|
||||||
textColor: context.primaryColor,
|
textColor: context.primaryColor,
|
||||||
title: const Text(
|
title: Text(
|
||||||
'theme_setting_theme_title',
|
'theme_setting_theme_title',
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium,
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
subtitle: const Text(
|
subtitle: const Text(
|
||||||
'theme_setting_theme_subtitle',
|
'theme_setting_theme_subtitle',
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
children: [
|
children: [
|
||||||
SwitchListTile.adaptive(
|
SwitchListTile.adaptive(
|
||||||
|
|
|
@ -27,10 +27,6 @@ class SettingsPage extends HookConsumerWidget {
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
title: const Text(
|
title: const Text(
|
||||||
'setting_pages_app_bar_settings',
|
'setting_pages_app_bar_settings',
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
|
|
|
@ -148,8 +148,8 @@ class SharedLinkItem extends ConsumerWidget {
|
||||||
label: Text(
|
label: Text(
|
||||||
labelText,
|
labelText,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 10,
|
fontSize: 11,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
color: isDarkMode ? Colors.black : Colors.white,
|
color: isDarkMode ? Colors.black : Colors.white,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -67,12 +67,10 @@ class SharedLinkPage extends HookConsumerWidget {
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 16.0, top: 16.0, bottom: 30.0),
|
padding: const EdgeInsets.only(left: 16.0, top: 16.0, bottom: 30.0),
|
||||||
child: const Text(
|
child: Text(
|
||||||
"shared_link_manage_links",
|
"shared_link_manage_links",
|
||||||
style: TextStyle(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontSize: 14,
|
color: context.textTheme.labelLarge?.color?.withAlpha(200),
|
||||||
color: Colors.grey,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
),
|
),
|
||||||
|
|
|
@ -54,7 +54,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
||||||
fontFamily: 'SnowburstOne',
|
fontFamily: 'SnowburstOne',
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontSize: 15,
|
fontSize: 16,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -72,14 +72,15 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
||||||
leading: SizedBox(
|
leading: SizedBox(
|
||||||
child: Icon(
|
child: Icon(
|
||||||
icon,
|
icon,
|
||||||
color: theme.textTheme.labelMedium?.color,
|
color: theme.textTheme.labelLarge?.color?.withAlpha(250),
|
||||||
size: 20,
|
size: 20,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
text,
|
text,
|
||||||
style:
|
style: theme.textTheme.labelLarge?.copyWith(
|
||||||
theme.textTheme.labelLarge?.copyWith(fontWeight: FontWeight.bold),
|
color: theme.textTheme.labelLarge?.color?.withAlpha(250),
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
);
|
);
|
||||||
|
@ -145,9 +146,11 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
||||||
Icons.storage_rounded,
|
Icons.storage_rounded,
|
||||||
color: theme.primaryColor,
|
color: theme.primaryColor,
|
||||||
),
|
),
|
||||||
title: const Text(
|
title: Text(
|
||||||
"backup_controller_page_server_storage",
|
"backup_controller_page_server_storage",
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
).tr(),
|
).tr(),
|
||||||
isThreeLine: true,
|
isThreeLine: true,
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
|
@ -230,7 +233,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
insetPadding: EdgeInsets.only(
|
insetPadding: EdgeInsets.only(
|
||||||
top: isHorizontal ? 20 : 60,
|
top: isHorizontal ? 20 : 40,
|
||||||
left: horizontalPadding,
|
left: horizontalPadding,
|
||||||
right: horizontalPadding,
|
right: horizontalPadding,
|
||||||
bottom: isHorizontal ? 20 : 100,
|
bottom: isHorizontal ? 20 : 100,
|
||||||
|
|
|
@ -31,8 +31,8 @@ class AppBarProfileInfoBox extends HookConsumerWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
final userImage = UserCircleAvatar(
|
final userImage = UserCircleAvatar(
|
||||||
radius: 20,
|
radius: 22,
|
||||||
size: 40,
|
size: 44,
|
||||||
user: user,
|
user: user,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -119,16 +119,15 @@ class AppBarProfileInfoBox extends HookConsumerWidget {
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
authState.name,
|
authState.name,
|
||||||
style: TextStyle(
|
style: context.textTheme.titleMedium?.copyWith(
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 16,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
authState.userEmail,
|
authState.userEmail,
|
||||||
style: context.textTheme.labelMedium?.copyWith(
|
style: context.textTheme.bodySmall?.copyWith(
|
||||||
fontSize: 12,
|
color: context.textTheme.bodySmall?.color?.withAlpha(200),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -18,6 +18,8 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
ServerInfo serverInfoState = ref.watch(serverInfoProvider);
|
ServerInfo serverInfoState = ref.watch(serverInfoProvider);
|
||||||
|
|
||||||
final appInfo = useState({});
|
final appInfo = useState({});
|
||||||
|
const titleFontSize = 12.0;
|
||||||
|
const contentFontSize = 11.0;
|
||||||
|
|
||||||
getPackageInfo() async {
|
getPackageInfo() async {
|
||||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||||
|
@ -63,7 +65,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: 11,
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -83,9 +85,9 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
"server_info_box_app_version".tr(),
|
"server_info_box_app_version".tr(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: titleFontSize,
|
||||||
color: context.textTheme.labelSmall?.color,
|
color: context.textTheme.labelSmall?.color,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -97,7 +99,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
"${appInfo.value["version"]} build.${appInfo.value["buildNumber"]}",
|
"${appInfo.value["version"]} build.${appInfo.value["buildNumber"]}",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: contentFontSize,
|
||||||
color: context.textTheme.labelSmall?.color
|
color: context.textTheme.labelSmall?.color
|
||||||
?.withOpacity(0.5),
|
?.withOpacity(0.5),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
@ -123,9 +125,9 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
"server_info_box_server_version".tr(),
|
"server_info_box_server_version".tr(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: titleFontSize,
|
||||||
color: context.textTheme.labelSmall?.color,
|
color: context.textTheme.labelSmall?.color,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -139,7 +141,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
? "${serverInfoState.serverVersion.major}.${serverInfoState.serverVersion.minor}.${serverInfoState.serverVersion.patch}"
|
? "${serverInfoState.serverVersion.major}.${serverInfoState.serverVersion.minor}.${serverInfoState.serverVersion.patch}"
|
||||||
: "--",
|
: "--",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: contentFontSize,
|
||||||
color: context.textTheme.labelSmall?.color
|
color: context.textTheme.labelSmall?.color
|
||||||
?.withOpacity(0.5),
|
?.withOpacity(0.5),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
@ -165,9 +167,9 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
"server_info_box_server_url".tr(),
|
"server_info_box_server_url".tr(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: titleFontSize,
|
||||||
color: context.textTheme.labelSmall?.color,
|
color: context.textTheme.labelSmall?.color,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -194,7 +196,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
child: Text(
|
child: Text(
|
||||||
getServerUrl() ?? '--',
|
getServerUrl() ?? '--',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: contentFontSize,
|
||||||
color: context.textTheme.labelSmall?.color
|
color: context.textTheme.labelSmall?.color
|
||||||
?.withOpacity(0.5),
|
?.withOpacity(0.5),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
@ -234,9 +236,9 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
Text(
|
Text(
|
||||||
"server_info_box_latest_release".tr(),
|
"server_info_box_latest_release".tr(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: titleFontSize,
|
||||||
color: context.textTheme.labelSmall?.color,
|
color: context.textTheme.labelSmall?.color,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -252,7 +254,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
||||||
? "${serverInfoState.latestVersion.major}.${serverInfoState.latestVersion.minor}.${serverInfoState.latestVersion.patch}"
|
? "${serverInfoState.latestVersion.major}.${serverInfoState.latestVersion.minor}.${serverInfoState.latestVersion.patch}"
|
||||||
: "--",
|
: "--",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: contentFontSize,
|
||||||
color: context.textTheme.labelSmall?.color
|
color: context.textTheme.labelSmall?.color
|
||||||
?.withOpacity(0.5),
|
?.withOpacity(0.5),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
|
|
@ -38,11 +38,11 @@ ThemeData immichLightTheme = ThemeData(
|
||||||
hintColor: Colors.indigo,
|
hintColor: Colors.indigo,
|
||||||
focusColor: Colors.indigo,
|
focusColor: Colors.indigo,
|
||||||
splashColor: Colors.indigo.withOpacity(0.15),
|
splashColor: Colors.indigo.withOpacity(0.15),
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
scaffoldBackgroundColor: immichBackgroundColor,
|
scaffoldBackgroundColor: immichBackgroundColor,
|
||||||
snackBarTheme: const SnackBarThemeData(
|
snackBarTheme: const SnackBarThemeData(
|
||||||
contentTextStyle: TextStyle(
|
contentTextStyle: TextStyle(
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
color: Colors.indigo,
|
color: Colors.indigo,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
|
@ -50,7 +50,7 @@ ThemeData immichLightTheme = ThemeData(
|
||||||
),
|
),
|
||||||
appBarTheme: AppBarTheme(
|
appBarTheme: AppBarTheme(
|
||||||
titleTextStyle: const TextStyle(
|
titleTextStyle: const TextStyle(
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
color: Colors.indigo,
|
color: Colors.indigo,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
|
@ -125,9 +125,9 @@ ThemeData immichLightTheme = ThemeData(
|
||||||
surfaceTintColor: Colors.transparent,
|
surfaceTintColor: Colors.transparent,
|
||||||
labelTextStyle: MaterialStatePropertyAll(
|
labelTextStyle: MaterialStatePropertyAll(
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontSize: 12,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
color: Colors.grey[700],
|
color: Colors.grey[800],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -160,10 +160,10 @@ ThemeData immichDarkTheme = ThemeData(
|
||||||
primaryColor: immichDarkThemePrimaryColor,
|
primaryColor: immichDarkThemePrimaryColor,
|
||||||
scaffoldBackgroundColor: immichDarkBackgroundColor,
|
scaffoldBackgroundColor: immichDarkBackgroundColor,
|
||||||
hintColor: Colors.grey[600],
|
hintColor: Colors.grey[600],
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
snackBarTheme: SnackBarThemeData(
|
snackBarTheme: SnackBarThemeData(
|
||||||
contentTextStyle: TextStyle(
|
contentTextStyle: TextStyle(
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
color: immichDarkThemePrimaryColor,
|
color: immichDarkThemePrimaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
|
@ -176,7 +176,7 @@ ThemeData immichDarkTheme = ThemeData(
|
||||||
),
|
),
|
||||||
appBarTheme: AppBarTheme(
|
appBarTheme: AppBarTheme(
|
||||||
titleTextStyle: TextStyle(
|
titleTextStyle: TextStyle(
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'Overpass',
|
||||||
color: immichDarkThemePrimaryColor,
|
color: immichDarkThemePrimaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
|
@ -249,9 +249,9 @@ ThemeData immichDarkTheme = ThemeData(
|
||||||
surfaceTintColor: Colors.transparent,
|
surfaceTintColor: Colors.transparent,
|
||||||
labelTextStyle: MaterialStatePropertyAll(
|
labelTextStyle: MaterialStatePropertyAll(
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontSize: 12,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
color: Colors.grey[500],
|
color: Colors.grey[300],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -97,27 +97,28 @@ flutter:
|
||||||
- assets/
|
- assets/
|
||||||
- assets/i18n/
|
- assets/i18n/
|
||||||
fonts:
|
fonts:
|
||||||
- family: WorkSans
|
|
||||||
fonts:
|
|
||||||
- asset: fonts/WorkSans.ttf
|
|
||||||
- asset: fonts/WorkSans-Italic.ttf
|
|
||||||
style: italic
|
|
||||||
# - asset: fonts/WorkSans-Medium.ttf
|
|
||||||
# weight: 500
|
|
||||||
# - asset: fonts/WorkSans-SemiBold.ttf
|
|
||||||
# weight: 600
|
|
||||||
# - asset: fonts/WorkSans-Bold.ttf
|
|
||||||
# weight: 700
|
|
||||||
# - asset: fonts/WorkSans-ExtraBold.ttf
|
|
||||||
# weight: 800
|
|
||||||
# - asset: fonts/WorkSans-Black.ttf
|
|
||||||
# weight: 900
|
|
||||||
- family: SnowburstOne
|
- family: SnowburstOne
|
||||||
fonts:
|
fonts:
|
||||||
- asset: fonts/SnowburstOne.ttf
|
- asset: fonts/SnowburstOne.ttf
|
||||||
- family: Inconsolata
|
- family: Inconsolata
|
||||||
fonts:
|
fonts:
|
||||||
- asset: fonts/Inconsolata-Regular.ttf
|
- asset: fonts/Inconsolata-Regular.ttf
|
||||||
|
- family: Overpass
|
||||||
|
fonts:
|
||||||
|
- asset: fonts/overpass/Overpass-Regular.ttf
|
||||||
|
weight: 400
|
||||||
|
- asset: fonts/overpass/Overpass-Italic.ttf
|
||||||
|
style: italic
|
||||||
|
- asset: fonts/overpass/Overpass-Medium.ttf
|
||||||
|
weight: 500
|
||||||
|
- asset: fonts/overpass/Overpass-SemiBold.ttf
|
||||||
|
weight: 600
|
||||||
|
- asset: fonts/overpass/Overpass-Bold.ttf
|
||||||
|
weight: 700
|
||||||
|
- family: OverpassMono
|
||||||
|
fonts:
|
||||||
|
- asset: fonts/overpass/OverpassMono.ttf
|
||||||
|
|
||||||
flutter_icons:
|
flutter_icons:
|
||||||
image_path_android: "assets/immich-logo-no-outline.png"
|
image_path_android: "assets/immich-logo-no-outline.png"
|
||||||
image_path_ios: "assets/immich-logo-no-outline.png"
|
image_path_ios: "assets/immich-logo-no-outline.png"
|
||||||
|
|
Loading…
Reference in a new issue