From e73bcd7e4b05180ce9b5e6bbfd81c2161f0ff23a Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Thu, 4 Dec 2025 09:11:09 +0100 Subject: [PATCH] refactor: move non-reused widgets --- lib/providers/user_profile_provider.dart | 2 +- lib/screens/discover_screen.dart | 4 +- lib/screens/hub_detail_screen.dart | 2 +- .../libraries}/adaptive_media_grid.dart | 10 ++-- .../libraries}/content_state_builder.dart | 2 +- .../libraries}/context_menu_wrapper.dart | 0 .../libraries}/empty_state_widget.dart | 0 .../libraries}/error_state_widget.dart | 0 .../libraries}/filters_bottom_sheet.dart | 12 ++--- .../libraries}/folder_tree_item.dart | 4 +- .../libraries}/folder_tree_view.dart | 14 +++--- .../{ => libraries}/libraries_screen.dart | 46 +++++++++---------- .../libraries}/server_badge.dart | 0 .../libraries}/sort_bottom_sheet.dart | 8 ++-- .../libraries}/state_message_widget.dart | 0 .../tabs}/base_library_tab.dart | 10 ++-- .../tabs}/library_browse_tab.dart | 42 ++++++++--------- .../tabs}/library_collections_tab.dart | 8 ++-- .../tabs}/library_playlists_tab.dart | 14 +++--- .../tabs}/library_recommended_tab.dart | 14 +++--- lib/screens/main_screen.dart | 4 +- .../playlist_detail_screen.dart | 28 +++++------ .../playlist}/playlist_item_card.dart | 16 +++---- .../profile}/pin_entry_dialog.dart | 2 +- .../profile}/profile_list_tile.dart | 4 +- .../{ => profile}/profile_switch_screen.dart | 12 ++--- .../profile}/user_avatar_widget.dart | 4 +- lib/screens/{ => settings}/about_screen.dart | 4 +- .../settings}/hotkey_recorder_widget.dart | 2 +- .../{ => settings}/licenses_screen.dart | 4 +- lib/screens/{ => settings}/logs_screen.dart | 6 +-- .../{ => settings}/settings_screen.dart | 20 ++++---- .../subtitle_styling_screen.dart | 6 +-- lib/widgets/media_card.dart | 2 +- 34 files changed, 153 insertions(+), 153 deletions(-) rename lib/{widgets => screens/libraries}/adaptive_media_grid.dart (91%) rename lib/{widgets => screens/libraries}/content_state_builder.dart (98%) rename lib/{widgets => screens/libraries}/context_menu_wrapper.dart (100%) rename lib/{widgets => screens/libraries}/empty_state_widget.dart (100%) rename lib/{widgets => screens/libraries}/error_state_widget.dart (100%) rename lib/{widgets => screens/libraries}/filters_bottom_sheet.dart (97%) rename lib/{widgets => screens/libraries}/folder_tree_item.dart (98%) rename lib/{widgets => screens/libraries}/folder_tree_view.dart (95%) rename lib/screens/{ => libraries}/libraries_screen.dart (98%) rename lib/{widgets => screens/libraries}/server_badge.dart (100%) rename lib/{widgets => screens/libraries}/sort_bottom_sheet.dart (97%) rename lib/{widgets => screens/libraries}/state_message_widget.dart (100%) rename lib/screens/{library_tabs => libraries/tabs}/base_library_tab.dart (95%) rename lib/screens/{library_tabs => libraries/tabs}/library_browse_tab.dart (94%) rename lib/screens/{library_tabs => libraries/tabs}/library_collections_tab.dart (90%) rename lib/screens/{library_tabs => libraries/tabs}/library_playlists_tab.dart (89%) rename lib/screens/{library_tabs => libraries/tabs}/library_recommended_tab.dart (93%) rename lib/screens/{ => playlist}/playlist_detail_screen.dart (94%) rename lib/{widgets => screens/playlist}/playlist_item_card.dart (94%) rename lib/{widgets => screens/profile}/pin_entry_dialog.dart (99%) rename lib/{widgets => screens/profile}/profile_list_tile.dart (97%) rename lib/screens/{ => profile}/profile_switch_screen.dart (94%) rename lib/{widgets => screens/profile}/user_avatar_widget.dart (98%) rename lib/screens/{ => settings}/about_screen.dart (97%) rename lib/{widgets => screens/settings}/hotkey_recorder_widget.dart (99%) rename lib/screens/{ => settings}/licenses_screen.dart (98%) rename lib/screens/{ => settings}/logs_screen.dart (98%) rename lib/screens/{ => settings}/settings_screen.dart (99%) rename lib/screens/{ => settings}/subtitle_styling_screen.dart (98%) diff --git a/lib/providers/user_profile_provider.dart b/lib/providers/user_profile_provider.dart index 685b29f70..893c9c78c 100644 --- a/lib/providers/user_profile_provider.dart +++ b/lib/providers/user_profile_provider.dart @@ -7,7 +7,7 @@ import '../services/plex_auth_service.dart'; import '../services/storage_service.dart'; import '../utils/app_logger.dart'; import '../utils/provider_extensions.dart'; -import '../widgets/pin_entry_dialog.dart'; +import '../screens/profile/pin_entry_dialog.dart'; import 'plex_client_provider.dart'; class UserProfileProvider extends ChangeNotifier { diff --git a/lib/screens/discover_screen.dart b/lib/screens/discover_screen.dart index 36692b32e..937793041 100644 --- a/lib/screens/discover_screen.dart +++ b/lib/screens/discover_screen.dart @@ -12,10 +12,10 @@ import '../providers/server_state_provider.dart'; import '../providers/hidden_libraries_provider.dart'; import '../providers/playback_state_provider.dart'; import '../widgets/desktop_app_bar.dart'; -import '../widgets/user_avatar_widget.dart'; +import 'profile/user_avatar_widget.dart'; import '../widgets/hub_section.dart'; import '../widgets/hub_navigation_controller.dart'; -import 'profile_switch_screen.dart'; +import 'profile/profile_switch_screen.dart'; import '../providers/user_profile_provider.dart'; import '../providers/settings_provider.dart'; import '../mixins/refreshable.dart'; diff --git a/lib/screens/hub_detail_screen.dart b/lib/screens/hub_detail_screen.dart index ba4aefcb2..5fa997bf2 100644 --- a/lib/screens/hub_detail_screen.dart +++ b/lib/screens/hub_detail_screen.dart @@ -10,7 +10,7 @@ import '../utils/app_logger.dart'; import '../utils/grid_cross_axis_extent.dart'; import '../widgets/media_card.dart'; import '../widgets/desktop_app_bar.dart'; -import '../widgets/sort_bottom_sheet.dart'; +import 'libraries/sort_bottom_sheet.dart'; import '../mixins/refreshable.dart'; import '../i18n/strings.g.dart'; diff --git a/lib/widgets/adaptive_media_grid.dart b/lib/screens/libraries/adaptive_media_grid.dart similarity index 91% rename from lib/widgets/adaptive_media_grid.dart rename to lib/screens/libraries/adaptive_media_grid.dart index 2e4cb90fe..9a9048ca1 100644 --- a/lib/widgets/adaptive_media_grid.dart +++ b/lib/screens/libraries/adaptive_media_grid.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../models/plex_metadata.dart'; -import '../providers/settings_provider.dart'; -import '../services/settings_service.dart' show ViewMode; -import '../utils/grid_size_calculator.dart'; -import 'media_card.dart'; +import '../../models/plex_metadata.dart'; +import '../../providers/settings_provider.dart'; +import '../../services/settings_service.dart' show ViewMode; +import '../../utils/grid_size_calculator.dart'; +import '../../widgets/media_card.dart'; /// A widget that automatically switches between grid and list view /// based on user settings, providing a consistent layout pattern diff --git a/lib/widgets/content_state_builder.dart b/lib/screens/libraries/content_state_builder.dart similarity index 98% rename from lib/widgets/content_state_builder.dart rename to lib/screens/libraries/content_state_builder.dart index d4c802891..dc61d6970 100644 --- a/lib/widgets/content_state_builder.dart +++ b/lib/screens/libraries/content_state_builder.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import '../i18n/strings.g.dart'; +import '../../i18n/strings.g.dart'; import 'empty_state_widget.dart'; import 'error_state_widget.dart'; diff --git a/lib/widgets/context_menu_wrapper.dart b/lib/screens/libraries/context_menu_wrapper.dart similarity index 100% rename from lib/widgets/context_menu_wrapper.dart rename to lib/screens/libraries/context_menu_wrapper.dart diff --git a/lib/widgets/empty_state_widget.dart b/lib/screens/libraries/empty_state_widget.dart similarity index 100% rename from lib/widgets/empty_state_widget.dart rename to lib/screens/libraries/empty_state_widget.dart diff --git a/lib/widgets/error_state_widget.dart b/lib/screens/libraries/error_state_widget.dart similarity index 100% rename from lib/widgets/error_state_widget.dart rename to lib/screens/libraries/error_state_widget.dart diff --git a/lib/widgets/filters_bottom_sheet.dart b/lib/screens/libraries/filters_bottom_sheet.dart similarity index 97% rename from lib/widgets/filters_bottom_sheet.dart rename to lib/screens/libraries/filters_bottom_sheet.dart index e66e6346c..0c99bf342 100644 --- a/lib/widgets/filters_bottom_sheet.dart +++ b/lib/screens/libraries/filters_bottom_sheet.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import '../models/plex_filter.dart'; -import '../widgets/app_bar_back_button.dart'; -import '../widgets/bottom_sheet_header.dart'; -import '../utils/provider_extensions.dart'; -import '../utils/keyboard_utils.dart'; -import '../i18n/strings.g.dart'; +import '../../models/plex_filter.dart'; +import '../../widgets/app_bar_back_button.dart'; +import '../../widgets/bottom_sheet_header.dart'; +import '../../utils/provider_extensions.dart'; +import '../../utils/keyboard_utils.dart'; +import '../../i18n/strings.g.dart'; class FiltersBottomSheet extends StatefulWidget { final List filters; diff --git a/lib/widgets/folder_tree_item.dart b/lib/screens/libraries/folder_tree_item.dart similarity index 98% rename from lib/widgets/folder_tree_item.dart rename to lib/screens/libraries/folder_tree_item.dart index 086fb7398..61caf51d6 100644 --- a/lib/widgets/folder_tree_item.dart +++ b/lib/screens/libraries/folder_tree_item.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import '../models/plex_metadata.dart'; -import '../utils/keyboard_utils.dart'; +import '../../models/plex_metadata.dart'; +import '../../utils/keyboard_utils.dart'; /// Individual item in the folder tree /// Can be either a folder (expandable) or a file (tappable) diff --git a/lib/widgets/folder_tree_view.dart b/lib/screens/libraries/folder_tree_view.dart similarity index 95% rename from lib/widgets/folder_tree_view.dart rename to lib/screens/libraries/folder_tree_view.dart index 818cf76c2..fc1de6218 100644 --- a/lib/widgets/folder_tree_view.dart +++ b/lib/screens/libraries/folder_tree_view.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import '../models/plex_metadata.dart'; -import '../screens/media_detail_screen.dart'; -import '../screens/season_detail_screen.dart'; -import '../utils/app_logger.dart'; -import '../utils/provider_extensions.dart'; -import '../utils/video_player_navigation.dart'; -import '../i18n/strings.g.dart'; +import '../../models/plex_metadata.dart'; +import '../media_detail_screen.dart'; +import '../season_detail_screen.dart'; +import '../../utils/app_logger.dart'; +import '../../utils/provider_extensions.dart'; +import '../../utils/video_player_navigation.dart'; +import '../../i18n/strings.g.dart'; import 'folder_tree_item.dart'; import 'empty_state_widget.dart'; import 'error_state_widget.dart'; diff --git a/lib/screens/libraries_screen.dart b/lib/screens/libraries/libraries_screen.dart similarity index 98% rename from lib/screens/libraries_screen.dart rename to lib/screens/libraries/libraries_screen.dart index 294165d63..81f0c0bcd 100644 --- a/lib/screens/libraries_screen.dart +++ b/lib/screens/libraries/libraries_screen.dart @@ -2,29 +2,29 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:dio/dio.dart'; -import '../../services/plex_client.dart'; -import '../models/plex_library.dart'; -import '../models/plex_metadata.dart'; -import '../models/plex_sort.dart'; -import '../providers/hidden_libraries_provider.dart'; -import '../providers/multi_server_provider.dart'; -import '../utils/app_logger.dart'; -import '../utils/keyboard_utils.dart'; -import '../utils/provider_extensions.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../widgets/context_menu_wrapper.dart'; -import '../widgets/server_badge.dart'; -import '../services/storage_service.dart'; -import '../mixins/refreshable.dart'; -import '../mixins/item_updatable.dart'; -import '../theme/theme_helper.dart'; -import '../i18n/strings.g.dart'; -import '../utils/error_message_utils.dart'; -import 'library_tabs/library_browse_tab.dart'; -import 'library_tabs/library_recommended_tab.dart'; -import 'library_tabs/library_collections_tab.dart'; -import 'library_tabs/library_playlists_tab.dart'; -import 'main_screen.dart'; +import '../../../services/plex_client.dart'; +import '../../models/plex_library.dart'; +import '../../models/plex_metadata.dart'; +import '../../models/plex_sort.dart'; +import '../../providers/hidden_libraries_provider.dart'; +import '../../providers/multi_server_provider.dart'; +import '../../utils/app_logger.dart'; +import '../../utils/keyboard_utils.dart'; +import '../../utils/provider_extensions.dart'; +import '../../widgets/desktop_app_bar.dart'; +import 'context_menu_wrapper.dart'; +import 'server_badge.dart'; +import '../../services/storage_service.dart'; +import '../../mixins/refreshable.dart'; +import '../../mixins/item_updatable.dart'; +import '../../theme/theme_helper.dart'; +import '../../i18n/strings.g.dart'; +import '../../utils/error_message_utils.dart'; +import 'tabs/library_browse_tab.dart'; +import 'tabs/library_recommended_tab.dart'; +import 'tabs/library_collections_tab.dart'; +import 'tabs/library_playlists_tab.dart'; +import '../main_screen.dart'; class LibrariesScreen extends StatefulWidget { const LibrariesScreen({super.key}); diff --git a/lib/widgets/server_badge.dart b/lib/screens/libraries/server_badge.dart similarity index 100% rename from lib/widgets/server_badge.dart rename to lib/screens/libraries/server_badge.dart diff --git a/lib/widgets/sort_bottom_sheet.dart b/lib/screens/libraries/sort_bottom_sheet.dart similarity index 97% rename from lib/widgets/sort_bottom_sheet.dart rename to lib/screens/libraries/sort_bottom_sheet.dart index ffe3ff87f..ce7eba6d0 100644 --- a/lib/widgets/sort_bottom_sheet.dart +++ b/lib/screens/libraries/sort_bottom_sheet.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import '../models/plex_sort.dart'; -import '../widgets/bottom_sheet_header.dart'; -import '../utils/keyboard_utils.dart'; -import '../i18n/strings.g.dart'; +import '../../models/plex_sort.dart'; +import '../../widgets/bottom_sheet_header.dart'; +import '../../utils/keyboard_utils.dart'; +import '../../i18n/strings.g.dart'; class SortBottomSheet extends StatefulWidget { final List sortOptions; diff --git a/lib/widgets/state_message_widget.dart b/lib/screens/libraries/state_message_widget.dart similarity index 100% rename from lib/widgets/state_message_widget.dart rename to lib/screens/libraries/state_message_widget.dart diff --git a/lib/screens/library_tabs/base_library_tab.dart b/lib/screens/libraries/tabs/base_library_tab.dart similarity index 95% rename from lib/screens/library_tabs/base_library_tab.dart rename to lib/screens/libraries/tabs/base_library_tab.dart index caaa9cf00..41e11d241 100644 --- a/lib/screens/library_tabs/base_library_tab.dart +++ b/lib/screens/libraries/tabs/base_library_tab.dart @@ -1,10 +1,10 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import '../../models/plex_library.dart'; -import '../../utils/app_logger.dart'; -import '../../mixins/library_tab_state.dart'; -import '../../mixins/refreshable.dart'; -import '../../widgets/content_state_builder.dart'; +import '../../../models/plex_library.dart'; +import '../../../utils/app_logger.dart'; +import '../../../mixins/library_tab_state.dart'; +import '../../../mixins/refreshable.dart'; +import '../content_state_builder.dart'; /// Base class for library tab screens that provides common state management /// and lifecycle handling for tabs that display library content. diff --git a/lib/screens/library_tabs/library_browse_tab.dart b/lib/screens/libraries/tabs/library_browse_tab.dart similarity index 94% rename from lib/screens/library_tabs/library_browse_tab.dart rename to lib/screens/libraries/tabs/library_browse_tab.dart index 37999490b..b5c4eab65 100644 --- a/lib/screens/library_tabs/library_browse_tab.dart +++ b/lib/screens/libraries/tabs/library_browse_tab.dart @@ -2,27 +2,27 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:dio/dio.dart'; -import '../../services/plex_client.dart'; -import '../../models/plex_library.dart'; -import '../../models/plex_metadata.dart'; -import '../../models/plex_filter.dart'; -import '../../models/plex_sort.dart'; -import '../../providers/settings_provider.dart'; -import '../../utils/error_message_utils.dart'; -import '../../utils/grid_size_calculator.dart'; -import '../../utils/keyboard_utils.dart'; -import '../../widgets/media_card.dart'; -import '../../widgets/folder_tree_view.dart'; -import '../../widgets/filters_bottom_sheet.dart'; -import '../../widgets/sort_bottom_sheet.dart'; -import '../../widgets/empty_state_widget.dart'; -import '../../widgets/error_state_widget.dart'; -import '../../services/storage_service.dart'; -import '../../services/settings_service.dart' show ViewMode; -import '../../mixins/item_updatable.dart'; -import '../../mixins/library_tab_state.dart'; -import '../../mixins/refreshable.dart'; -import '../../i18n/strings.g.dart'; +import '../../../../services/plex_client.dart'; +import '../../../models/plex_library.dart'; +import '../../../models/plex_metadata.dart'; +import '../../../models/plex_filter.dart'; +import '../../../models/plex_sort.dart'; +import '../../../providers/settings_provider.dart'; +import '../../../utils/error_message_utils.dart'; +import '../../../utils/grid_size_calculator.dart'; +import '../../../utils/keyboard_utils.dart'; +import '../../../widgets/media_card.dart'; +import '../folder_tree_view.dart'; +import '../filters_bottom_sheet.dart'; +import '../sort_bottom_sheet.dart'; +import '../empty_state_widget.dart'; +import '../error_state_widget.dart'; +import '../../../services/storage_service.dart'; +import '../../../services/settings_service.dart' show ViewMode; +import '../../../mixins/item_updatable.dart'; +import '../../../mixins/library_tab_state.dart'; +import '../../../mixins/refreshable.dart'; +import '../../../i18n/strings.g.dart'; /// Browse tab for library screen /// Shows library items with grouping, filtering, and sorting diff --git a/lib/screens/library_tabs/library_collections_tab.dart b/lib/screens/libraries/tabs/library_collections_tab.dart similarity index 90% rename from lib/screens/library_tabs/library_collections_tab.dart rename to lib/screens/libraries/tabs/library_collections_tab.dart index 498ca7ead..77265a717 100644 --- a/lib/screens/library_tabs/library_collections_tab.dart +++ b/lib/screens/libraries/tabs/library_collections_tab.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import '../../models/plex_metadata.dart'; -import '../../utils/library_refresh_notifier.dart'; -import '../../i18n/strings.g.dart'; -import '../../widgets/adaptive_media_grid.dart'; +import '../../../models/plex_metadata.dart'; +import '../../../utils/library_refresh_notifier.dart'; +import '../../../i18n/strings.g.dart'; +import '../adaptive_media_grid.dart'; import 'base_library_tab.dart'; /// Collections tab for library screen diff --git a/lib/screens/library_tabs/library_playlists_tab.dart b/lib/screens/libraries/tabs/library_playlists_tab.dart similarity index 89% rename from lib/screens/library_tabs/library_playlists_tab.dart rename to lib/screens/libraries/tabs/library_playlists_tab.dart index e65a99813..1efe90f9b 100644 --- a/lib/screens/library_tabs/library_playlists_tab.dart +++ b/lib/screens/libraries/tabs/library_playlists_tab.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../models/plex_playlist.dart'; -import '../../providers/settings_provider.dart'; -import '../../utils/library_refresh_notifier.dart'; -import '../../services/settings_service.dart' show ViewMode; -import '../../utils/grid_size_calculator.dart'; -import '../../widgets/media_card.dart'; -import '../../i18n/strings.g.dart'; +import '../../../models/plex_playlist.dart'; +import '../../../providers/settings_provider.dart'; +import '../../../utils/library_refresh_notifier.dart'; +import '../../../services/settings_service.dart' show ViewMode; +import '../../../utils/grid_size_calculator.dart'; +import '../../../widgets/media_card.dart'; +import '../../../i18n/strings.g.dart'; import 'base_library_tab.dart'; /// Playlists tab for library screen diff --git a/lib/screens/library_tabs/library_recommended_tab.dart b/lib/screens/libraries/tabs/library_recommended_tab.dart similarity index 93% rename from lib/screens/library_tabs/library_recommended_tab.dart rename to lib/screens/libraries/tabs/library_recommended_tab.dart index dd0a7d7f3..d4df4d5a3 100644 --- a/lib/screens/library_tabs/library_recommended_tab.dart +++ b/lib/screens/libraries/tabs/library_recommended_tab.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import '../../services/plex_client.dart'; -import '../../i18n/strings.g.dart'; -import '../../mixins/item_updatable.dart'; -import '../../models/plex_hub.dart'; -import '../../models/plex_metadata.dart'; -import '../../widgets/hub_navigation_controller.dart'; -import '../../widgets/hub_section.dart'; +import '../../../../services/plex_client.dart'; +import '../../../i18n/strings.g.dart'; +import '../../../mixins/item_updatable.dart'; +import '../../../models/plex_hub.dart'; +import '../../../models/plex_metadata.dart'; +import '../../../widgets/hub_navigation_controller.dart'; +import '../../../widgets/hub_section.dart'; import 'base_library_tab.dart'; /// Recommended tab for library screen diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 0cff555d1..d049ad28d 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -15,9 +15,9 @@ import '../providers/playback_state_provider.dart'; import '../services/plex_auth_service.dart'; import '../services/storage_service.dart'; import 'discover_screen.dart'; -import 'libraries_screen.dart'; +import 'libraries/libraries_screen.dart'; import 'search_screen.dart'; -import 'settings_screen.dart'; +import 'settings/settings_screen.dart'; /// InheritedWidget that provides back navigation functionality to child screens class BackNavigationScope extends InheritedWidget { diff --git a/lib/screens/playlist_detail_screen.dart b/lib/screens/playlist/playlist_detail_screen.dart similarity index 94% rename from lib/screens/playlist_detail_screen.dart rename to lib/screens/playlist/playlist_detail_screen.dart index 3769e0702..c029e6414 100644 --- a/lib/screens/playlist_detail_screen.dart +++ b/lib/screens/playlist/playlist_detail_screen.dart @@ -1,20 +1,20 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../services/plex_client.dart'; -import '../models/plex_playlist.dart'; -import '../models/plex_metadata.dart'; -import '../providers/settings_provider.dart'; -import '../providers/playback_state_provider.dart'; -import '../utils/app_logger.dart'; -import '../utils/provider_extensions.dart'; -import '../utils/video_player_navigation.dart'; -import '../utils/grid_size_calculator.dart'; -import '../widgets/media_card.dart'; -import '../widgets/playlist_item_card.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../i18n/strings.g.dart'; -import '../utils/dialogs.dart'; -import 'base_media_list_detail_screen.dart'; +import '../../models/plex_playlist.dart'; +import '../../models/plex_metadata.dart'; +import '../../providers/settings_provider.dart'; +import '../../providers/playback_state_provider.dart'; +import '../../utils/app_logger.dart'; +import '../../utils/provider_extensions.dart'; +import '../../utils/video_player_navigation.dart'; +import '../../utils/grid_size_calculator.dart'; +import '../../widgets/media_card.dart'; +import 'playlist_item_card.dart'; +import '../../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; +import '../../utils/dialogs.dart'; +import '../base_media_list_detail_screen.dart'; /// Screen to display the contents of a playlist class PlaylistDetailScreen extends StatefulWidget { diff --git a/lib/widgets/playlist_item_card.dart b/lib/screens/playlist/playlist_item_card.dart similarity index 94% rename from lib/widgets/playlist_item_card.dart rename to lib/screens/playlist/playlist_item_card.dart index 9036126fb..b43e45c65 100644 --- a/lib/widgets/playlist_item_card.dart +++ b/lib/screens/playlist/playlist_item_card.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import '../../services/plex_client.dart'; -import '../mixins/keyboard_long_press_mixin.dart'; -import '../models/plex_metadata.dart'; -import '../utils/duration_formatter.dart'; -import '../utils/provider_extensions.dart'; -import '../i18n/strings.g.dart'; -import 'focus/focus_indicator.dart'; -import 'media_context_menu.dart'; -import 'plex_optimized_image.dart'; +import '../../mixins/keyboard_long_press_mixin.dart'; +import '../../models/plex_metadata.dart'; +import '../../utils/duration_formatter.dart'; +import '../../utils/provider_extensions.dart'; +import '../../i18n/strings.g.dart'; +import '../../widgets/focus/focus_indicator.dart'; +import '../../widgets/media_context_menu.dart'; +import '../../widgets/plex_optimized_image.dart'; /// Custom list item widget for playlist items /// Shows drag handle, poster, title/metadata, duration, and remove button diff --git a/lib/widgets/pin_entry_dialog.dart b/lib/screens/profile/pin_entry_dialog.dart similarity index 99% rename from lib/widgets/pin_entry_dialog.dart rename to lib/screens/profile/pin_entry_dialog.dart index c66e9167d..7ccd1e64e 100644 --- a/lib/widgets/pin_entry_dialog.dart +++ b/lib/screens/profile/pin_entry_dialog.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import '../i18n/strings.g.dart'; +import '../../i18n/strings.g.dart'; /// Dialog for entering a PIN to access a protected profile class PinEntryDialog extends StatefulWidget { diff --git a/lib/widgets/profile_list_tile.dart b/lib/screens/profile/profile_list_tile.dart similarity index 97% rename from lib/widgets/profile_list_tile.dart rename to lib/screens/profile/profile_list_tile.dart index 9712653fb..bdffc241a 100644 --- a/lib/widgets/profile_list_tile.dart +++ b/lib/screens/profile/profile_list_tile.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../i18n/strings.g.dart'; -import '../models/plex_home_user.dart'; +import '../../i18n/strings.g.dart'; +import '../../models/plex_home_user.dart'; import 'user_avatar_widget.dart'; enum UserAttribute { admin, restricted, protected } diff --git a/lib/screens/profile_switch_screen.dart b/lib/screens/profile/profile_switch_screen.dart similarity index 94% rename from lib/screens/profile_switch_screen.dart rename to lib/screens/profile/profile_switch_screen.dart index 42f84707b..a532413b7 100644 --- a/lib/screens/profile_switch_screen.dart +++ b/lib/screens/profile/profile_switch_screen.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../models/plex_home_user.dart'; -import '../providers/user_profile_provider.dart'; -import '../utils/provider_extensions.dart'; -import '../widgets/profile_list_tile.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../i18n/strings.g.dart'; +import '../../models/plex_home_user.dart'; +import '../../providers/user_profile_provider.dart'; +import '../../utils/provider_extensions.dart'; +import 'profile_list_tile.dart'; +import '../../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; class ProfileSwitchScreen extends StatelessWidget { const ProfileSwitchScreen({super.key}); diff --git a/lib/widgets/user_avatar_widget.dart b/lib/screens/profile/user_avatar_widget.dart similarity index 98% rename from lib/widgets/user_avatar_widget.dart rename to lib/screens/profile/user_avatar_widget.dart index ca0500079..0e7070464 100644 --- a/lib/widgets/user_avatar_widget.dart +++ b/lib/screens/profile/user_avatar_widget.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import '../models/plex_home_user.dart'; -import '../i18n/strings.g.dart'; +import '../../models/plex_home_user.dart'; +import '../../i18n/strings.g.dart'; class UserAvatarWidget extends StatelessWidget { final PlexHomeUser user; diff --git a/lib/screens/about_screen.dart b/lib/screens/settings/about_screen.dart similarity index 97% rename from lib/screens/about_screen.dart rename to lib/screens/settings/about_screen.dart index 640e3531d..444530f82 100644 --- a/lib/screens/about_screen.dart +++ b/lib/screens/settings/about_screen.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../i18n/strings.g.dart'; +import '../../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; import 'licenses_screen.dart'; class AboutScreen extends StatefulWidget { diff --git a/lib/widgets/hotkey_recorder_widget.dart b/lib/screens/settings/hotkey_recorder_widget.dart similarity index 99% rename from lib/widgets/hotkey_recorder_widget.dart rename to lib/screens/settings/hotkey_recorder_widget.dart index b9029099e..323e303ec 100644 --- a/lib/widgets/hotkey_recorder_widget.dart +++ b/lib/screens/settings/hotkey_recorder_widget.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; -import '../i18n/strings.g.dart'; +import '../../i18n/strings.g.dart'; class HotKeyRecorderWidget extends StatefulWidget { final String actionName; diff --git a/lib/screens/licenses_screen.dart b/lib/screens/settings/licenses_screen.dart similarity index 98% rename from lib/screens/licenses_screen.dart rename to lib/screens/settings/licenses_screen.dart index 042123f61..55ef6fdb8 100644 --- a/lib/screens/licenses_screen.dart +++ b/lib/screens/settings/licenses_screen.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../i18n/strings.g.dart'; +import '../../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; class MergedLicenseEntry { final String packageName; diff --git a/lib/screens/logs_screen.dart b/lib/screens/settings/logs_screen.dart similarity index 98% rename from lib/screens/logs_screen.dart rename to lib/screens/settings/logs_screen.dart index 3be745ea2..e9447650e 100644 --- a/lib/screens/logs_screen.dart +++ b/lib/screens/settings/logs_screen.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:logger/logger.dart'; -import '../i18n/strings.g.dart'; -import '../utils/app_logger.dart'; -import '../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; +import '../../utils/app_logger.dart'; +import '../../widgets/desktop_app_bar.dart'; class LogsScreen extends StatefulWidget { const LogsScreen({super.key}); diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings/settings_screen.dart similarity index 99% rename from lib/screens/settings_screen.dart rename to lib/screens/settings/settings_screen.dart index 8b3878057..08df36197 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -3,16 +3,16 @@ import 'package:hotkey_manager/hotkey_manager.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; -import '../i18n/strings.g.dart'; -import 'main_screen.dart'; -import '../providers/settings_provider.dart'; -import '../providers/theme_provider.dart'; -import '../services/keyboard_shortcuts_service.dart'; -import '../services/settings_service.dart' as settings; -import '../services/update_service.dart'; -import '../utils/keyboard_utils.dart'; -import '../widgets/desktop_app_bar.dart'; -import '../widgets/hotkey_recorder_widget.dart'; +import '../../i18n/strings.g.dart'; +import '../main_screen.dart'; +import '../../providers/settings_provider.dart'; +import '../../providers/theme_provider.dart'; +import '../../services/keyboard_shortcuts_service.dart'; +import '../../services/settings_service.dart' as settings; +import '../../services/update_service.dart'; +import '../../utils/keyboard_utils.dart'; +import '../../widgets/desktop_app_bar.dart'; +import 'hotkey_recorder_widget.dart'; import 'about_screen.dart'; import 'logs_screen.dart'; import 'subtitle_styling_screen.dart'; diff --git a/lib/screens/subtitle_styling_screen.dart b/lib/screens/settings/subtitle_styling_screen.dart similarity index 98% rename from lib/screens/subtitle_styling_screen.dart rename to lib/screens/settings/subtitle_styling_screen.dart index 2accf3d92..d54bcd797 100644 --- a/lib/screens/subtitle_styling_screen.dart +++ b/lib/screens/settings/subtitle_styling_screen.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flex_color_picker/flex_color_picker.dart'; -import '../i18n/strings.g.dart'; -import '../services/settings_service.dart'; -import '../widgets/desktop_app_bar.dart'; +import '../../i18n/strings.g.dart'; +import '../../services/settings_service.dart'; +import '../../widgets/desktop_app_bar.dart'; class SubtitleStylingScreen extends StatefulWidget { const SubtitleStylingScreen({super.key}); diff --git a/lib/widgets/media_card.dart b/lib/widgets/media_card.dart index 387d1d068..52602dcb2 100644 --- a/lib/widgets/media_card.dart +++ b/lib/widgets/media_card.dart @@ -16,7 +16,7 @@ import '../utils/content_rating_formatter.dart'; import '../utils/duration_formatter.dart'; import '../screens/media_detail_screen.dart'; import '../screens/season_detail_screen.dart'; -import '../screens/playlist_detail_screen.dart'; +import '../screens/playlist/playlist_detail_screen.dart'; import '../screens/collection_detail_screen.dart'; import '../theme/theme_helper.dart'; import '../i18n/strings.g.dart';