-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/ Introduce New Camera Connection Feature for Android TV App #1392
Merged
ghassenbenzahra123
merged 32 commits into
release-1.18.0
from
feat/rtsp-camera-connection-androidtv
Nov 27, 2024
Merged
Feature/ Introduce New Camera Connection Feature for Android TV App #1392
ghassenbenzahra123
merged 32 commits into
release-1.18.0
from
feat/rtsp-camera-connection-androidtv
Nov 27, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#1402) * feat: add new localization keys and placeholders for Quran-related strings - Added new keys for Quran reading page placeholders in portrait mode in intl_sq.arb and intl_bs.arb - Introduced 'switchQuranType' placeholder with 'name' in intl_sq.arb and intl_bs.arb - Updated onboarding_language_selector.dart to include debug print for locale language code - Ensured proper formatting with newlines at the end of arb files * fix: remove Montenegrin because flutter doesn't support it * remove the print
* feat(auto_reading): add state management for auto reading feature - Implement `AutoScrollState` to handle auto scroll speed, visibility, and font size settings. - Add `AutoScrollNotifier` to manage auto-scrolling functionality with start, stop, and speed control. - Include derived properties for controlling the visibility of speed control and scroll behavior. - Support toggling between single-page view and auto-scrolling. * feat(quran): add play toggle button and refactor directory structure - Add play toggle button to `QuranReadingScreen` with portrait and landscape support. - Move `quran_reading_screen.dart` to new `reading` directory for better organization. - Create `QuranFloatingActionButtons` widget for handling floating action buttons in portrait and landscape modes. * refactor: Extract floating action controls into new widget with passed focus nodes - Extracted floating action controls into `QuranFloatingActionControls` widget. - Used `OrientationBuilder` within the new widget to determine orientation internally. - Passed focus nodes from `QuranReadingScreen` to the new widget for external focus management. - Maintained existing UI and design without modifications. * feat: add the to_string and making the AutoScrollNotifier auto disposed * modify the new ui * feat: add auto-scrolling reading mode with font size and speed controls - QuranFloatingActionControls: - Implemented `_buildAutoScrollingReadingMode` to display controls when auto-scroll is active. - Added methods: - `_buildFontSizeControls` for adjusting font size. - `_buildSpeedControls` for adjusting auto-scroll speed. - `_buildPlayPauseButton` for toggling auto-scroll. - `_buildActionButton` as a helper for creating action buttons. - Modified `_buildFloatingPortrait` and `_buildFloatingLandscape` to display auto-scroll controls based on the current state. - AutoScrollState: - Fixed `isAutoScrolling` getter to correctly represent the auto-scrolling state. - AutoScrollNotifier: - Added methods: - `increaseFontSize` and `decreaseFontSize` to adjust font size. - `increaseSpeed` and `decreaseSpeed` to adjust auto-scroll speed. - Updated `startAutoScroll` to use dynamic speed settings. * fix: scrolling functionality and refactor Quran reading code - Implement auto-scrolling that aligns with the current page and page height. - Refactor floating action buttons into separate widget classes for better code organization. - Update auto-scroll state and notifier to handle scroll controller and dynamic speed adjustments. * refactor QuranReadingScreen: Remove unused imports and redundant widget functions - Removed unnecessary imports such as SvgPicture and ReciterSelectionScreen. - Cleaned up redundant widget methods like `buildFloatingPortrait`, `buildFloatingLandscape`, and other floating action button handlers. - Simplified the UI logic by eliminating unused `QuranModeButton` and `PlayToggleButton` widgets. * merge on main * refactor: remove unused floating action buttons * refactor: migrate screen rotation to state management - Add isRotated field to QuranReadingState to manage rotation state - Add toggleRotation method to QuranReadingNotifier - Remove local ValueNotifier for rotation management - Update QuranFloatingActionControls to use state-managed rotation - Simplify _OrientationToggleButton to use state rotation - Remove orientation dependencies from UserPreferencesManager * refactor(quran): improve keyboard navigation and focus management - Replace custom key event handlers with FocusTraversalPolicy for better focus management - Add ArrowButtonsFocusTraversalPolicy to handle navigation between left/right buttons - Implement up/down navigation from arrow buttons to back button and page selector - Fix positioning issues with Stack and Positioned widgets - Remove ValueNotifier in favor of setState for rotation state management - Clean up widget hierarchy and remove redundant wrapper classes - Add proper focus order using FocusTraversalOrder - Fix duplicate Positioned widgets causing layout issues - Improve code organization and readability * remove unused `ArrowButtonsFocusTraversalPolicy` in the quran_reading_widgets.dart * fix: resolve Positioned widget conflicts and improve focus navigation - Remove nested Positioned widgets causing render conflicts - Fix focus navigation system in reading screen: * Add proper FocusTraversalOrder for all interactive elements * Implement custom ArrowButtonsFocusTraversalPolicy * Add keyboard navigation support (arrows, tab, enter/space) - Reorganize widget tree structure to prevent parent data conflicts - Improve navigation button layout and accessibility - Fix RTL/LTR direction handling in navigation buttons * remove the unnecessary `FocusTraversalGroup` and order * refactor: remove `QuranFocusTraversalPolicy` class from `quran_floating_action_buttons.dart` * refactor: implement strategy pattern for Quran reading view and focus management Introduced the `QuranViewStrategy` abstract class and created two concrete strategies, `AutoScrollViewStrategy` and `NormalViewStrategy`, to handle view and control layout for different Quran reading modes. Replaced previous inline focus management with a new `FocusNodes` helper class for organizing focus nodes. Refactored loading and error indicators into separate widget methods for cleaner code structure. This update enhances readability and allows for easier expansion of view strategies in the future. * refactor: add font size and speed controls for Quran auto-scrolling mode - Updated `autoScrollSpeed` default value in `AutoScrollState` to 0.1 for a slower starting speed. - Added `cycleFontSize` and `cycleSpeed` methods in `AutoScrollNotifier` to allow cycling through font sizes and scroll speeds with a single button, improving user control and simplifying UI. - Refactored `_FontSizeControls` and `_SpeedControls` widgets to use a single `_ActionButton` for adjusting font size and speed, displaying current values in tooltips. - Re-introduced `_ActionButton` class with autofocus support for enhanced focus management. * refactor: Quran reading widgets for improved modularity and maintainability - Converted functions in `quran_reading_widgets.dart` into distinct `ConsumerWidget` classes: - `VerticalPageViewWidget`, `HorizontalPageViewWidget` - `RightSwitchButtonWidget`, `LeftSwitchButtonWidget` - `PageNumberIndicatorWidget`, `MoshafSelectorPositionedWidget` - `BackButtonWidget`, `SvgPictureWidget` * feat: add scaling the size of the pages with the font * feat: add stop and pause and add close the mode * fix: maintain scroll position and speed when changing auto-scroll settings - Prevent scroll position reset when changing scroll speed - Only restart timer instead of full scroll reinitialize when adjusting speed * remove _handleFloatingActionButtons in the quran floating action * feat(quran-reader): Add auto-scroll pause/resume on tap - Add tap gesture detection to auto-scrolling view - Implement play/pause toggle functionality on tap - Disable manual scrolling in auto-scroll mode - Clean up code formatting and indentation * reformat * feat(quran): integrate surah name display in SurahSelectorWidget - Replace icon with current surah name display in the top bar - Add transparent background with white text for better visibility - Maintain existing dialog functionality for surah selection * feat(ui): show quran reading controls in both portrait & landscape modes - Remove orientation-specific conditional rendering - Display navigation controls, surah selector and page indicators in all orientations - Maintain consistent control behavior across screen modes * fix: portrait mode focus traversal for Quran reading screen - Removed unused `FocusScopeNode` in `QuranFloatingActionControls`. - Introduced a new focus traversal policy (`PortraitModeFocusTraversalPolicy`) for better keyboard navigation in portrait mode. - Updated `_buildBody` to handle focus nodes in both portrait and landscape orientation * refactor: `quran_floating_action_buttons.dart` for dynamic button sizing and improved readability - Updated button and icon sizes to scale dynamically based on screen width, enhancing UI consistency across different devices. * refactor * refactor(quran-reading): update back button behavior and add exit button focus handling - Removed the `BackButtonWidget` from the `quran_reading_screen.dart` page to simplify UI elements. - Enhanced the `_ExitButton` widget in `quran_floating_action_buttons.dart`: - Changed from `ConsumerWidget` to `ConsumerStatefulWidget` for state management. - Added a `FocusNode` for the exit button to set autofocus on load. - Implemented an `initState` method to request focus after widget binding. * feat: add name for the exitFocusNode * reformat
* switch to extended image package to handle exception throw * switch extended image version * Update pubspec.yaml * switch to fast cached library as a temp workaround --------- Co-authored-by: Ibrahim ZEHHAF <[email protected]>
…b.com/mawaqit/android-tv-app into feat/rtsp-camera-connection-androidtv
lib/src/state_management/rtsp_camera_stream/rtsp_camera_stream_notifier.dart
Outdated
Show resolved
Hide resolved
lib/src/state_management/rtsp_camera_stream/rtsp_camera_stream_notifier.dart
Outdated
Show resolved
Hide resolved
lib/src/state_management/rtsp_camera_stream/rtsp_camera_stream_state.dart
Outdated
Show resolved
Hide resolved
lib/src/state_management/rtsp_camera_stream/rtsp_camera_stream_notifier.dart
Outdated
Show resolved
Hide resolved
lib/src/state_management/rtsp_camera_stream/rtsp_camera_stream_notifier.dart
Outdated
Show resolved
Hide resolved
* feat(routes): add Quran-specific routes and route generator * refactor(routes): migrate to named routes and simplify navigation logic in the quran * fix: Improve Quran mode selection navigation - Modify route generator to handle QuranModeSelection separately * fix: waiting for the handle push * fix the formating * fix: Pop the screen while it has dialog in reading * refactor: AdhanSubScreen to use ConsumerStatefulWidget and manage Quran mode - Updated AdhanSubScreen to use `ConsumerStatefulWidget` and `ConsumerState` for improved state management with Riverpod. - Moved Quran mode exit logic to AdhanSubScreen and JummuaLive components, removing redundant code from salah_workflow. - Added post-frame callback in AdhanSubScreen and JummuaLive to trigger `exitQuranMode` via `quranNotifierProvider`. * pause quran player when adhan begins --------- Co-authored-by: Ghassen Ben Zahra <[email protected]>
ibrahim-zehhaf-mawaqit
changed the base branch from
release-1.17.0
to
release-1.18.0
November 14, 2024 09:26
# Conflicts: # lib/l10n/intl_ar.arb # lib/l10n/intl_en.arb # lib/l10n/intl_fr.arb # lib/src/const/constants.dart # lib/src/pages/SettingScreen.dart # lib/src/pages/home/sub_screens/JummuaLive.dart
…PCameraStreamNotifier
…or handling - Added `_initializeFromSavedUrl` to handle saved URL initialization with better URL validation logic. - Enhanced `toggleEnabled` method to pause/resume streams based on RTSP state changes. - Refactored `updateStream` to validate URL formats and handle errors gracefully. - Introduced new exception classes (`URLNotProvidedRTSPURLException`, `YouTubeVideoIdExtractionException`) for specific error scenarios. - Improved user feedback via snackbars on URL validation changes. - Extended `RTSPCameraSettingsState` with Equatable for better comparison and added `isInvalidUrl` flag. - Refined `JummuaLive` and RTSP settings screen logic to improve error handling and user experience. - Added `_buildErrorScreen` for consistent error display and retry functionality. - Consolidated and clarified RTSP stream state management for YouTube and RTSP sources.
YassinNouh21
approved these changes
Nov 25, 2024
…ream from the RTSP settings will override the mosque manager's stream when valid.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📝 Summary
This PR fixes #1137
Description
Our Android TV app that allows users to connect to a camera and display jumua prayer on the TV screen.
Demo
20241029_165729.mp4
Checklist: