#625 option to set the Tags page as home

This commit is contained in:
Thibault Deckers 2023-05-01 11:45:33 +02:00
parent 9aa3527f19
commit a4869bf41a
7 changed files with 47 additions and 48 deletions

View file

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased]
### Added
- option to set the Tags page as home
## <a id="v1.8.6"></a>[v1.8.6] - 2023-04-30
### Added

View file

@ -1,5 +1,6 @@
import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart';
import 'package:aves/widgets/filter_grids/tags_page.dart';
import 'package:aves_model/aves_model.dart';
extension ExtraHomePageSetting on HomePageSetting {
@ -9,6 +10,8 @@ extension ExtraHomePageSetting on HomePageSetting {
return CollectionPage.routeName;
case HomePageSetting.albums:
return AlbumListPage.routeName;
case HomePageSetting.tags:
return TagListPage.routeName;
}
}
}

View file

@ -104,6 +104,8 @@ extension ExtraHomePageSettingView on HomePageSetting {
return context.l10n.drawerCollectionAll;
case HomePageSetting.albums:
return context.l10n.drawerAlbumPage;
case HomePageSetting.tags:
return context.l10n.drawerTagPage;
}
}
}

View file

@ -5,6 +5,7 @@ import 'package:aves/model/source/collection_source.dart';
import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart';
import 'package:aves/widgets/filter_grids/tags_page.dart';
import 'package:aves_model/aves_model.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -33,25 +34,25 @@ class TvNavigationPopHandler {
case HomePageSetting.collection:
return context.read<CollectionLens>().filters.isEmpty;
case HomePageSetting.albums:
case HomePageSetting.tags:
return true;
}
}
static Route _getHomeRoute() {
switch (settings.homePage) {
final homePage = settings.homePage;
Route buildRoute(WidgetBuilder builder) => MaterialPageRoute(
settings: RouteSettings(name: homePage.routeName),
builder: builder,
);
switch (homePage) {
case HomePageSetting.collection:
return MaterialPageRoute(
settings: const RouteSettings(name: CollectionPage.routeName),
builder: (context) => CollectionPage(
source: context.read<CollectionSource>(),
filters: null,
),
);
return buildRoute((context) => CollectionPage(source: context.read<CollectionSource>(), filters: null));
case HomePageSetting.albums:
return MaterialPageRoute(
settings: const RouteSettings(name: AlbumListPage.routeName),
builder: (context) => const AlbumListPage(),
);
return buildRoute((context) => const AlbumListPage());
case HomePageSetting.tags:
return buildRoute((context) => const TagListPage());
}
}
}

View file

@ -24,6 +24,7 @@ import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/search/page.dart';
import 'package:aves/widgets/common/search/route.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart';
import 'package:aves/widgets/filter_grids/tags_page.dart';
import 'package:aves/widgets/search/search_delegate.dart';
import 'package:aves/widgets/settings/home_widget_settings_page.dart';
import 'package:aves/widgets/settings/screen_saver_settings_page.dart';
@ -345,32 +346,23 @@ class _HomePageState extends State<HomePage> {
filters = _initialFilters ?? {};
break;
}
Route buildRoute(WidgetBuilder builder) => DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: builder,
);
final source = context.read<CollectionSource>();
switch (routeName) {
case AlbumListPage.routeName:
return DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: (context) => const AlbumListPage(),
);
return buildRoute((context) => const AlbumListPage());
case TagListPage.routeName:
return buildRoute((context) => const TagListPage());
case ScreenSaverPage.routeName:
return DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: (context) => ScreenSaverPage(
source: source,
),
);
return buildRoute((context) => ScreenSaverPage(source: source));
case ScreenSaverSettingsPage.routeName:
return DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: (context) => const ScreenSaverSettingsPage(),
);
return buildRoute((context) => const ScreenSaverSettingsPage());
case HomeWidgetSettingsPage.routeName:
return DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: (context) => HomeWidgetSettingsPage(
widgetId: _widgetId!,
),
);
return buildRoute((context) => HomeWidgetSettingsPage(widgetId: _widgetId!));
case SearchPage.routeName:
return SearchPageRoute(
delegate: CollectionSearchDelegate(
@ -382,13 +374,7 @@ class _HomePageState extends State<HomePage> {
);
case CollectionPage.routeName:
default:
return DirectMaterialPageRoute(
settings: RouteSettings(name: routeName),
builder: (context) => CollectionPage(
source: source,
filters: filters,
),
);
return buildRoute((context) => CollectionPage(source: source, filters: filters));
}
}
}

View file

@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:aves/model/filters/album.dart';
import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/settings/enums/home_page.dart';
import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart';
@ -12,7 +13,6 @@ import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_logo.dart';
import 'package:aves/widgets/debug/app_debug_page.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart';
import 'package:aves/widgets/navigation/drawer/app_drawer.dart';
import 'package:aves/widgets/navigation/drawer/page_nav_tile.dart';
import 'package:aves/widgets/navigation/drawer/tile.dart';
@ -240,13 +240,16 @@ class _TvRailState extends State<TvRail> {
return pageBookmarks.map(_routeNavEntry).toList();
}
_NavEntry _routeNavEntry(String routeName) => _NavEntry(
_NavEntry _routeNavEntry(String routeName) {
final homePage = settings.homePage;
return _NavEntry(
icon: DrawerPageIcon(route: routeName),
label: DrawerPageTitle(route: routeName),
isHome: settings.homePage == HomePageSetting.albums && routeName == AlbumListPage.routeName,
isHome: homePage != HomePageSetting.collection && routeName == homePage.routeName,
isSelected: context.currentRouteName == routeName,
onSelection: () => _goTo(routeName),
);
}
void _goTo(String routeName) {
Navigator.maybeOf(context)?.pushAndRemoveUntil(

View file

@ -14,7 +14,7 @@ enum DisplayRefreshRateMode { auto, highest, lowest }
enum EntryBackground { black, white, checkered }
enum HomePageSetting { collection, albums }
enum HomePageSetting { collection, albums, tags }
enum KeepScreenOn { never, videoPlayback, viewerOnly, always }